1

AuthUserSessionカスタムとカスタムを作成し、の中AuthProviderに を登録しました。AuthFeatureAppHostBase

認証プロセスは、必要な情報をセッション (ASP.NET セッション) に入れる基盤となる ASP.NET アプリケーションによって管理されます。

内部AuthProvider.IsAuthorized()では、ASP.NET セッションからの情報を確認し、ユーザーがログに記録されているかどうかにかかわらず、true または false を返します。

ここで、サービス内でカスタムを使用したいとAuthUserSession思います。

AuthUserSessionのプロパティを内部に設定しましたが、を保存していないため、(同じリクエスト中でも)AuthProvider.IsAuthorized()サービス内でそれらにアクセスしようとすると空のプロパティが取得されると思います。SessionAs<MyCustomUserSession>()AuthUserSession

AuthUserSessionfromの保存方法がわかりませんAuthProvider.IsAuthorized()AuthProviderカスタム実装IRequiresRequestContextを使用しようとしましたRequestContext.Get<IHttpRequest>().SaveSession(userSession, SessionExpiry);が、.RequestContextnull

それを行う方法はありますか?

ご清聴ありがとうございました。

4

1 に答える 1

1

OK、ついに問題を解決しました。

カスタムに 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 に答える