2013-10-23 28 views
2

在現有的Silverlight應用程序中,我將WCF服務替換爲ServiceStack的身份驗證...我成功地設法移植了所有服務並對它們進行了測試..我有一個最後一點看看...身份驗證ServiceStack.NET從ASP.NET中移植身份驗證

當前我使用基於CustomMembershipProvider的Asp.NET身份驗證,該身份驗證用於檢查用戶是否可以訪問應用程序。

在我的每個服務方法的我有什麼作爲

public bool DoSomething(int idUser, string prefix) 
    { 
     if (!HttpContext.Current.User.Identity.IsAuthenticated) throw new SecurityExeption(); 

    //some computation 

     return res; 
    } 

,它工作正常... 現在我特林落實ServiceStack同樣的事情,我已經建立了我AuthProvider如下

公共類myAuthProvider:CredentialsAuthProvider { 公共覆蓋布爾TryAuthenticate(IServiceBase authService,用戶名字符串,字符串密碼){ 如果 (用戶名== 「測試」 & & password ==「test」) return true;

 return false; 
     //return base.TryAuthenticate(authService, userName, password); 
    } 

    public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo) 
    { 

     authService.SaveSession(session, SessionExpiry); 
    } 

} 

並測試了一個樣本項目(我保證我會在部署之前刪除測試/測試!)

我試圖檢查HttpContext.Current.User.Identity.IsAuthenticated是我通過SS服務驗證後有效,但我得到一個錯誤...我做錯了什麼或者ServiceStack不會在asp.net上構建身份驗證?我是否從錯誤的AuthProvider中尋找?我希望讓所有feauter堅持爲通過web.config文件等

感謝

回答

1

可能重複滑動期/會話超時的asp.net,而是因爲你對Silverlight可能會有所不同。
Use ASP.NET Membership in ServiceStack


基於文檔:

「ServiceStack的身份驗證,緩存和會話供應商是完全新的,乾淨,無依賴性,可測試不依賴和缺乏的ASP.NET的API的現有的成員資格,緩存或會話提供者模型。「

https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization

如果您使用的是服務棧JsonServiceClient,沒有什麼,將在您的要求任何身份驗證信息自動填寫。另外,一旦你在ServiceStack上運行你的服務,你將不再使用任何MS內置認證方案。請參閱Mythz答案,瞭解如何通過共享會話並行運行ASP.NET網站,以及這是否適用於您的情況。

我有一個預感,在您的自定義Auth提供程序,傳遞給TryAuthenticate的用戶名和密碼是NULL或空。

+0

感謝Byron Lo,我已經讀過SS實現與任何ms模型無關的事實......您知道SS如何實現Sliding Period of Session嗎?謝謝 – advapi

+1

它不,但你可以輕鬆地自己做。以下是一些示例: http:// stackoverflow。com/questions/14857921/how-to-advance-the-session-timeout-in-servicestack http://teadriven.me.uk/2013/02/14/sliding-sessions-in-service-stack/ 基本上,您可以使用會話保存超時,並在想要擴展時更新它。 –