我有一个带有 Windows 身份验证的 Intranet 应用程序设置。与大多数应用程序一样,应用程序的某些部分只能由特定角色访问。当不具有所需角色的用户尝试访问该区域时,应向他显示友好的“您无权查看此页面”视图。我搜索并查看了一些指导扩展授权属性的资源。我尝试了这种方法,但它根本不起作用。我仍然收到 IIS 错误消息,并且此自定义属性中的断点永远不会被命中。即使角色中的用户访问该页面,我的扩展属性中的断点也不会被命中。所以,我想知道我是否遗漏了什么?这就是我所拥有的——
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AuthorizeRedirect : AuthorizeAttribute
{
private const string IS_AUTHORIZED = "isAuthorized";
public string RedirectUrl = "~Areas/Errors/Http401";
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool isAuthorized = base.AuthorizeCore(httpContext);
httpContext.Items.Add(IS_AUTHORIZED, isAuthorized);
return isAuthorized;
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
var isAuthorized = filterContext.HttpContext.Items[IS_AUTHORIZED] != null ? Convert.ToBoolean(filterContext.HttpContext.Items[IS_AUTHORIZED]) : false;
if(!isAuthorized && filterContext.RequestContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.RequestContext.HttpContext.Response.Redirect(RedirectUrl);
}
}
}
控制器 -
[AuthorizeRedirect]
[HttpPost, ValidateInput(true)]
public ActionResult NewPart(PartsViewModel vmodel) {..}
有任何想法吗?
谢谢