【发布时间】:2012-07-18 14:45:10
【问题描述】:
我正在尝试为我的 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 实现不起作用?
【问题讨论】:
标签: asp.net-mvc-3 login global-asax authorize-attribute