3

我已经关注了 ServiceStack 的 SocialBootstrapAPI 中的示例,但我不明白重定向是如何连接的。当我转到未经身份验证的安全控制器时,我被重定向回索引页面。我无法在自己的应用程序中复制该行为。没有找到这些接线的完成位置 - 在 SocialBootstrapApi 的 web.config 中找不到它们?

我继承了ServiceStackController<AuthUserSession>并放在[Authenticate]了我的基本控制器上。这是我得到的错误:

[NullReferenceException: Object reference not set to an instance of an object.]
   ServiceStack.ServiceInterface.SessionExtensions.SessionAs(ICacheClient cache, IHttpRequest httpReq, IHttpResponse httpRes) +90
   ServiceStack.Mvc.ServiceStackController.SessionAs() +64
   ServiceStack.Mvc.ServiceStackController`1.get_UserSession() +36
   ServiceStack.Mvc.ServiceStackController`1.get_AuthSession() +5
   ServiceStack.Mvc.ExecuteServiceStackFiltersAttribute.OnActionExecuting(ActionExecutingContext filterContext) +97

这是我在 AppHost.cs 文件中的内容:

        //Enable Authentication
        ConfigureAuth(container);

        //Register In-Memory Cache provider. 
        //For Distributed Cache Providers Use: PooledRedisClientManager, BasicRedisClientManager or see: https://github.com/ServiceStack/ServiceStack/wiki/Caching
        container.Register<ICacheClient>(new MemoryCacheClient());
        container.Register<ISessionFactory>(c => 
            new SessionFactory(c.Resolve<ICacheClient>()));

ConfigureAuth() 类似于 SocialBootstrapApi 示例(不完全相同但很接近) - 我认为这里没有遗漏什么。

那么这是如何工作的呢?

4

2 回答 2

4

根据 OP 请求,对答案进行评论:

您是否为 MVC 控制器设置了 IoC?ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));

于 2012-12-11T21:20:09.887 回答
2

查看这个问题,了解如何更改ServiceStack 的 Authentication 使用的 HtmlRedirect 。

您可能还会发现 ServiceStack UseCases 中的CustomAuthenticationMvc项目更有用,因为它只关注 MVC 中的身份验证。

于 2012-12-10T23:47:19.163 回答