【发布时间】:2012-01-20 13:05:22
【问题描述】:
是否可以用;来装饰班级
[Authorize(Roles = "Admin")]
但它是否仅在您以发布模式构建应用程序时适用?
所以在调试模式下,没有应用授权,您无需登录即可进入管理页面。
我的管理屏幕不需要任何特殊的用户信息,只要您是否登录即可。
【问题讨论】:
标签: c# asp.net-mvc
是否可以用;来装饰班级
[Authorize(Roles = "Admin")]
但它是否仅在您以发布模式构建应用程序时适用?
所以在调试模式下,没有应用授权,您无需登录即可进入管理页面。
我的管理屏幕不需要任何特殊的用户信息,只要您是否登录即可。
【问题讨论】:
标签: c# asp.net-mvc
一种方法是创建一个自定义 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 中包含的一个继承来创建自己的自定义授权过滤器覆盖验证方法,然后将我概述的代码作为部分审计包含在内,这样您就可以在调试模式下绕过它,只是永远不要在 DEBUG 中编译和部署它。
您还可以检查调试器是否附加在您的自定义授权过滤器中:
System.Diagnostics.Debugger.IsAttached
【讨论】: