我正在尝试为我的 MVC3 站点实现一个非常基本的登录方案。如果我理解正确,而不是向我的每个控制器类添加 [Authorize] 标记,我应该能够简单地实现一个全局设置。为此,我在 global.asax 中添加了以下内容:
protected void Application_Start()
{
RegisterGlobalFilters(GlobalFilters.Filters);
}
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
}
在我的 webconfig 中,我添加了:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
结果是生成的页面完全是空白的。查看 url,似乎 mvc 按预期重定向到我的登录路由,但页面为空。如果我注释掉 global.asax 中的代码并将 [Authorize] 标记直接放在每个控制器中,它就会按预期工作。
作为一种解决方法,我已经实现了我所阅读的 MVC2 最佳实践,即创建一个 BaseController:Controller 类,向其添加 [Authorize] 标记,然后将我所有控制器的固有特性更改为从BaseController 而不是 Controller。
目前这似乎工作得很好。
但是为什么 global.asax 实现不起作用呢?