在ASP.NET MVC 3中覆盖/禁用授权

Tur*_*len 7 authentication authorization asp.net-mvc-3

我想知道是否可以禁用/覆盖所有授权属性.

在开发机器上,Active Directory组织与生产环境完全不同.当我在开发环境上开发/测试时,我必须"删除"所有授权属性.

在控制器操作方法中使用不同类型的活动目录组(在Authorize属性中).

[Authorize]
...

[Authorize(Roles="domain\HR")]
...

[Authorize(Roles="domain\IT")]
...
Run Code Online (Sandbox Code Playgroud)

提前致谢..

Ser*_*sev 11

我会做以下事情:

  1. 编写自定义授权属性,它将在Release中作为默认值使用,并始终允许在Debug中执行操作,即

    public class MyAuthorizeAttribute: AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            #if DEBUG
            return true;
            #else
            return base.AuthorizeCore(httpContext);
            #endif
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. Authorize用您自己的代码替换代码中的所有现有属性,即

    [MyAuthorize]
    ...
    
    [MyAuthorize(Roles="domain\HR")]
    ...
    
    [MyAuthorize(Roles="domain\IT")]
    ...
    
    Run Code Online (Sandbox Code Playgroud)
  3. 始终在调试模式下开发并在发布模式下发布

如果你不希望被绑定到你可以指定项目配置自己的条件编译符号调试/发布的事情-例如,DEVTEST和替换DEBUGDEVTEST在步骤1中的代码.