使用AuthorizeAttribute进行MVC集成测试

时间:2012-01-23 20:53:23

标签: c# asp.net-mvc asp.net-mvc-3 windows-authentication

在使用Windows身份验证的Intranet站点上,某些控制器方法被标记为“AuthorizeAttribute”控制对某些用户/组和角色的访问,我试图找出允许“测试用户”访问的最佳方法这些东西。

由于< location>与MVC(安全问题)不同,这里最好的方法是什么?

我的第一个想法是实现以下内容:

  1. 自定义配置部分,它基本上反映了< authorization>节
  2. 继承自“AuthorizeAttribute”的自定义属性,该属性根据自定义配置部分检查用户
  3. 使用配置转换删除QA和发布环境的自定义配置部分
  4. 是否有更简单/更好的方式???

1 个答案:

答案 0 :(得分:2)

<强>更新 我最初编写的是在类或方法上使用属性语法,但如果您使用MVC3,您还可以在(global.asax.cs)中使用全局操作过滤器,因此您只需要执行一次。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
#if DEBUG
    filters.Add(new AuthorizeAttribute() {Users="YourAccount"});
#endif
    //Your other global action filters
}

<强>原始 您可以使用#if DEBUG仅将调试代码添加到授权代码。

#if DEBUG
    [Authorize(Users = "YourAccount")]
#endif

Authorize属性允许多个,因此您不必重复生产授权用户列表或使用#else。