0

カスタムプロバイダーをどこにプラグインしてリクエストコンテキストを設定できますか?

レガシーシステムから機能を徐々に移行しながら、ASP.NETMVCアプリケーションを「スレーブ」モードで実行したいと思います。各リクエストにはCookieがあり、Cookieを取得し、外部呼び出しを行ってユーザーIDに解決し、残りのリクエストに対してそのユーザーIDを設定します。

フォーム認証Cookieを設定するか、Sessionを使用する場合がありますが、認証に関する信頼できる情報源は、すべての要求で外部から設定されたCookieである必要があります。

これを行うための最良の方法は何ですか?どこに接続しますか?認証プロバイダーとAuthorization属性を見てきましたが、どちらもこれに適した場所ではないようです。

4

2 に答える 2

1

HttpModuleがこのシナリオに理想的だと思いましたか?

私があなたを正しく理解しているなら、私は最近取り組んでいたプロジェクトで同様のことをしました:

  public class UserSessionHttpModule : IHttpModule
{

    private HttpApplication mApplication;

    public void Dispose()
    {
    }

    public void Init(HttpApplication context)
    {
        mApplication = context;
        context.BeginRequest += new EventHandler(CheckUserSession);
    }

    private void CheckUserSession(Object sender, EventArgs e)
    {
        var extension = Path.GetExtension(mApplication.Context.Request.Path);

        if (extension == "" || extension == ".aspx")
        {
            var userSessionService = ObjectFactory.GetInstance<IUserSessionService>();
            userSessionService.CheckUserSession();
        }

    }
}
于 2012-06-20T19:32:51.083 に答える
0

Initページ内のメソッドをオーバーライドしてイベントGlobal.asaxをリッスンできます。イベントは認証後に発生するため、フォーム認証Cookieから任意の値を変更して、独自の値を挿入できます。PostAuthenticateRequest

于 2012-06-20T19:33:09.413 に答える