2013-10-23 29 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/ 基本上,您可以使用会话保存超时,并在想要扩展时更新它。 –