我们要设置 Thread.CurrentCulture
- 在ASP.NET MVC 模型绑定器/验证器运行之前(当然),但是
- 在用户被授权之后(因为我们想从 UserSettings 表中加载文化)
我们应该追求的正确扩展点是什么?
动作过滤器为时已晚,Global.asax 为时过早(用户尚未授权)。有人有好主意吗?
我们要设置 Thread.CurrentCulture
我们应该追求的正确扩展点是什么?
动作过滤器为时已晚,Global.asax 为时过早(用户尚未授权)。有人有好主意吗?
您可以使用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;
}
}
Global.asax 为时尚早
Global.asax 的事件在请求生命周期的各个点发生,有些太早(BeginRequest),有些太晚(EndRequest),也许恰好适合您的要求。
也许一个处理程序PostAuthorizeRequest
,或者如果你想在 Session 中存储东西,PostAcquireRequestState
会做吗?