ASP.NET MVC,授权后设置文化

时间:2013-09-09 14:53:23

标签: c# asp.net-mvc asp.net-mvc-4 internationalization

我们要设置Thread.CurrentCulture

  • 之前 ASP.NET MVC模型绑定器/验证器运行(当然),
  • 用户获得授权后
  • (因为我们要从UserSettings表加载文化)

我们应该选择哪个正确的扩展点?

动作过滤器为时已晚,Global.asax为时尚早(用户尚未授权)。谁有好主意?

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:2)

  

Global.asax太早了

Global.asax的事件发生在请求生命周期的各个点,有些太早(BeginRequest),有些太晚(EndRequest),也许是适合您需求的事件。

也许是PostAuthorizeRequest的处理程序,或者如果你想在Session中存储东西,PostAcquireRequestState会这样做吗?