2

Thread.CurrentCulture を設定したい

  • ASP.NET MVC モデル バインダー/バリデーターが実行される前(もちろん)、しかし
  • ユーザーが承認された後(UserSettings テーブルからカルチャをロードしたいため)

正しい拡張ポイントは何ですか?

アクション フィルターが遅すぎます。Global.asax が早すぎます (ユーザーはまだ承認されていません)。良いアイデアを持っている人はいますか?

4

2 に答える 2

2

を使用してAuthorizationFilter、ビルドイン機能を拡張することができます。承認の時点で、それらが承認されているかどうかを判断し、それに応じてロジックを実行できます。

public class CustomAuthAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        bool isAuthorized = base.AuthorizeCore(httpContext);

        if (isAuthorized)
        {
            // set culture if user is authorized
        }
        else
        {
            // set culture if user is not authorized
        }

        return isAuthorized;
    }
}
于 2013-09-09T15:05:30.383 に答える
2

Global.asax は早すぎる

Global.asax には、要求のライフ サイクルのさまざまな時点で発生するイベントがあり、早すぎるもの (BeginRequest) や遅すぎるもの (EndRequest) など、要件に合ったイベントが発生する可能性があります。

たぶん、のハンドラーPostAuthorizeRequest、またはセッションに何かを保存したい場合PostAcquireRequestStateはどうでしょうか?

于 2013-09-09T16:48:22.163 に答える