【发布时间】:2011-07-31 11:46:42
【问题描述】:
我刚开始编写的 ASP.Net MVC 3 应用程序需要对所有控制器进行身份验证,AccountsController 除外。我没有用[Authenticate] 装饰我的所有控制器,而是编写了两个自定义属性。第一个继承自AuthorizationAttribute,它检查当前操作是否被另一个AllowAnonymous 修饰。如果不是,它使用表单身份验证来查看当前用户是否经过身份验证,如果没有,则重定向到登录页面。
为了将其应用于所有控制器,我已将自定义授权属性添加到 RegisterGlobalFilters 中的 GlobalFilterCollection global.asax.cs 中。
这一切都可以在浏览器中运行,但是当我运行 MVC Internet 应用程序附带的默认测试时,我很惊讶主页的 HomeControllerTest 测试通过并说“欢迎使用 ASP.NET MVC”文本在 ViewBag 中。我本来预计这个测试会失败,因为当在浏览器中查看时,这个操作会重定向到登录页面,除非用户已经登录。
我的身份验证方法是错误的,还是我需要在测试中写一些东西来应用全局过滤器?逐步完成单元测试表明正在添加过滤器,但它们并没有以我期望的方式应用。
【问题讨论】:
标签: asp.net-mvc-3 authentication forms-authentication