获得授权属性的许可?

我已经实现了自己的Authorize属性,并且我注意到在使用[Authorize]时它会查询以检查权限。

有没有什么方法可以获得该权限并在当前应用Authorize属性的控制器中使用它而无需重写和重新查询控制器中的代码?

是的你可以。 如果您将Authorize属性实现为ActionFilterAttribute,则可以使用ViewData集合来存储如下信息:

  public class RequireRegistrationActionFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { HttpRequestBase request = filterContext.HttpContext.Request; HttpResponseBase response = filterContext.HttpContext.Response; if (request != null && response != null) { bool isAuthenticated = request.IsAuthenticated; filterContext.Controller.ViewData["IsAuthenticated"] = isAuthenticated; if (!isAuthenticated) { string url = String.Format( "/?ReturnUrl={0}", HttpUtility.UrlEncode(request.Url.ToString())); response.Redirect(url); } } } } 

在anoteated控制器的acrion中,您可以访问该字段:

 bool isAuthenticated = (bool)(ViewData["IsAuthenticated"] ?? false);