MVC Authorize属性仅适用于发布版本
本文关键字:版本 布版本 Authorize 属性 适用于 MVC | 更新日期: 2023-09-27 18:20:47
是否可以用;
[Authorize(Roles = "Admin")]
但是它是否只适用于在发布模式下构建应用程序时?
因此,在调试模式下,不应用授权,您无需登录即可访问管理页面。
我的管理屏幕不需要任何特殊的用户信息,无论您是否登录。
一种方法是创建一个自定义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