我刚刚开始编写的ASP.Net MVC 3应用程序需要对所有控制器进行身份验证,但AccountsController
除外。我没有用[Authenticate]
装饰我的所有控制器,而是写了两个自定义属性。第一个从AuthorizationAttribute
继承,并检查当前动作是否用另一个AllowAnonymous
进行装饰。如果不是,则使用表单身份验证来查看当前用户是否已通过身份验证,如果没有,则重定向到登录页面。控制器测试忽略ASP.Net MVC中的全局过滤器?
要将此应用于所有控制器,我已将我的自定义授权属性添加到GlobalFilterCollection
的RegisterGlobalFilters
的global.asax.cs
中。
这一切都在浏览器中运行,但当我运行MVC Internet应用程序附带的默认测试以查看主页的HomeControllerTest测试通过并且表示“Welcome To ASP.NET MVC”文本在ViewBag中。我原本以为这个测试会失败,因为在浏览器中查看这个动作会重定向到登录页面,除非用户已经登录。
是我的方法来验证错误或我需要在测试中写东西应用全局过滤器?单步测试表明,过滤器正在被添加,但它们没有以我期望的方式应用。
感谢您的链接。我明白现在该做什么。 – Eifion