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,或者如果你想在 Session 中存储东西,PostAcquireRequestState会做吗?

于 2013-09-09T16:48:22.163 回答