1

我创建了我的自定义AuthUserSession和我AuthProvider的自定义,并AuthFeatureAppHostBase.

身份验证过程由底层 ASP.NET 应用程序管理,该应用程序将我需要的信息放入会话(ASP.NET 会话)中。

在里面AuthProvider.IsAuthorized(),我检查来自 ASP.NET 会话的信息,如果用户已登录,则返回 true 或 false。

现在我想AuthUserSession在我的服务中使用我的自定义。

我在里面设置了AuthUserSession's 属性,AuthProvider.IsAuthorized()但是当我尝试使用SessionAs<MyCustomUserSession>()(即使在同一个请求期间)在我的服务中访问它们时,我得到了空属性,因为我认为我不保存AuthUserSession

我不知道如何保存AuthUserSessionfrom AuthProvider.IsAuthorized()。我试图让我的自定义AuthProvider工具IRequiresRequestContext使用,RequestContext.Get<IHttpRequest>().SaveSession(userSession, SessionExpiry);但是.RequestContextnull

有没有办法做到这一点?

感谢您的关注。

4

1 回答 1

1

好的,我终于解决了这个问题。

我向我的自定义添加了一个 ICacheClient 属性,AuthProvider并解决了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);
于 2012-10-19T09:17:19.750 回答