我已经实现了我自己的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);
}
}
}
}
在带注释的控制器的 acrion 中,您可以通过以下方式访问该字段:
bool isAuthenticated = (bool)(ViewData["IsAuthenticated"] ?? false);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)