MVC Authorize属性仅适用于发布版本

本文关键字:版本 布版本 Authorize 属性 适用于 MVC | 更新日期: 2023-09-27 18:20:47

是否可以用;

[Authorize(Roles = "Admin")]

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

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

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

MVC Authorize属性仅适用于发布版本

一种方法是创建一个自定义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

您可以设置编译器指令:

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

但我不确定它们是否适用于元数据属性。您也可以通过从MVCm中包含的过滤器继承来创建自己的自定义Authorize过滤器。重写验证方法,然后将我概述的代码作为部分审计包括在内,这样您就可以在调试模式下绕过它,只是永远不要在DEBUG中编译并部署它。

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

 System.Diagnostics.Debugger.IsAttached