是否可以用;
装饰班级[Authorize(Roles = "Admin")]
但它只适用于在发布模式下构建应用程序吗?
因此,在调试模式下,未应用授权,您无需登录即可访问管理页面。
我的管理员屏幕不需要任何特殊的用户信息,只需要您是否登录。
答案 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