MVC仅授权发行版的属性

时间:2012-01-20 04:52:37

标签: c# asp.net-mvc

是否可以用;

装饰班级
[Authorize(Roles = "Admin")]

但它只适用于在发布模式下构建应用程序吗?

因此,在调试模式下,未应用授权,您无需登录即可访问管理页面。

我的管理员屏幕不需要任何特殊的用户信息,只需要您是否登录。

2 个答案:

答案 0 :(得分:8)

一种方法是创建自定义Authorize属性,然后像这样使用#if DEBUG:

public class SwitchableAuthorizationAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
    bool disableAuthentication = false;

    #if DEBUG
    disableAuthentication = true;
    #endif

    if (disableAuthentication)
        return true;

    return base.AuthorizeCore(httpContext);
}
}

从这里复制: http://www.diaryofaninja.com/blog/2011/07/24/writing-your-own-custom-aspnet-mvc-authorize-attributes

答案 1 :(得分:1)

您可以设置编译器指令:

 #if DEBUG
  //Add code here
  #else
  //add code here
  #endif

但我不肯定他们将使用元数据属性。你也可以通过继承MVCm附带的一个验证方法来创建你自己的自定义Authorize过滤器,然后包含我作为部分审计概述的代码,这样你在debugmode中就可以绕过它,只是永远不要在DEBUG中编译并部署它。

您还可以检查调试器是否附加在自定义授权过滤器中:

 System.Diagnostics.Debugger.IsAttached