我创建了自定义AuthUserSession
和我的自定义AuthProvider
,并在AuthFeature
内注册了AppHostBase
。
身份验证过程由底层ASP.NET应用程序管理,该应用程序将会话(ASP.NET会话)放入我需要的信息中。
在AuthProvider.IsAuthorized()
内部我检查ASP.NET会话中的信息,如果用户已登录,则返回true或false。
现在我想在我的服务中使用我的自定义AuthUserSession
。
我在AuthUserSession
中设置了AuthProvider.IsAuthorized()
的属性,但是当我尝试使用SessionAs<MyCustomUserSession>()
在我的服务中访问它们时,我得到空属性(即使在同一请求中),因为我不喜欢我认为不会保存AuthUserSession
。
我无法弄清楚如何从AuthUserSession
保存AuthProvider.IsAuthorized()
。
我尝试将自定义AuthProvider
工具IRequiresRequestContext
设为RequestContext.Get<IHttpRequest>().SaveSession(userSession, SessionExpiry);
,但RequestContext
为null
。
有办法吗?
感谢您的关注。
答案 0 :(得分:1)
我在自定义AuthProvider
中添加了ICacheClient属性,并解决了AppHost
内的依赖关系。
container.Register<ICacheClient>(new MemoryCacheClient());
Plugins.Add(new AuthFeature(
() => new MyCustomUserSession(),
new IAuthProvider[]
{ new MyCustomAuthProvider(container.Resolve<ICacheClient>()) }
));
然后在AuthProvider.IsAuthorized()
内部我使用以下方式保存会话:
Cache.CacheSet(SessionKey, userSession, SessionExpiry);