定制授权
我试图通过创建基本控制器并重写 OnAuthorization 方法来使用我自己的授权。
当授权失败时它工作正常,但当我的检查成功时我会收到 401 页面(但默认授权检查失败)。
protected override void OnAuthorization(AuthorizationContext filterContext)
{
var roleAttribute = typeof(AuthorizeAttribute);
var attributes = filterContext.ActionDescriptor.GetCustomAttributes(roleAttribute, true);
if (attributes.Length == 0)
attributes = GetType().GetCustomAttributes(roleAttribute, true);
if (attributes.Length == 0)
return;
MvcHelper.Authenticate();
foreach (AuthorizeAttribute item in attributes)
{
if (!Thread.CurrentPrincipal.IsInRole(item.Roles))
{
filterContext.Result = new RedirectResult("~/Error/Unauthorized/" + "?MissingRole=" + item.Roles);
return;
}
}
//how do I prevent the default authorization here?
}
我尝试过使用 filterContext.HttpContext.SkipAuthorization = true;
但它没有帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我通常在 ActionFilter 中执行此操作: https://gist.github.com/e297b435ceb8f022fb95
I usually do this in an ActionFilter : https://gist.github.com/e297b435ceb8f022fb95
我将分两步执行此操作:
AuthorizeAttribute
继承。I would do this in two steps:
AuthorizeAttribute
.