我已经关注了 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 示例(不完全相同但很接近) - 我认为这里没有遗漏什么。
那么这是如何工作的呢?