我会做以下事情:
编写自定义授权属性,该属性在Release中作为默认值使用,并始终允许在Debug中执行操作,即
public class MyAuthorizeAttribute: AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { #if DEBUG return true; #else return base.AuthorizeCore(httpContext); #endif } }
替换所有现有的 Authorize 代码中的属性与您自己的属性,即
Authorize
[MyAuthorize] ... [MyAuthorize(Roles="domain\HR")] ... [MyAuthorize(Roles="domain\IT")] ...
始终在调试模式下开发并在发布模式下发布
如果您不希望绑定到Debug / Release事物,可以在项目配置中指定自己的条件编译符号 - 例如, DEVTEST 并替换 DEBUG 同 DEVTEST 在第1步代码中。
DEVTEST
DEBUG
而不是重写 AuthorizeAttribute 你考虑过实施自己的吗? 您可以创建属性并处理验证的逻辑。
AuthorizeAttribute
与此类似的东西:
public class AuthorizeRolesAttribute : ActionFilterAttribute { public UserProfileRole[] Roles { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext) { var profile = ((ETMembershipUser)Membership.GetUser()).Profile; if (profile != null) { foreach (UserProfileRole role in Roles) { if (role == profile.Role) return; } } //throw new SecurityException("You can not access this page"); RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary(); redirectTargetDictionary.Add("action", "Index"); redirectTargetDictionary.Add("controller", "Home"); filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary); } }