在MVC中使用AuthorizeAttribute的子类
本文关键字:AuthorizeAttribute 子类 MVC | 更新日期: 2023-09-27 18:21:56
我正在尝试修改MVC中Controller方法的[Authorize]标记。我发现了一个许多人声称有效的例子。这是代码:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AuthorizeRedirect : AuthorizeAttribute
{
private const string IS_AUTHORIZED = "isAuthorized";
public string RedirectUrl = "~/error/unauthorized";
protected override bool AuthorizeCore(System.Web.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);
}
}
}
我在HomeController类中添加了这段代码作为Class,并将标记添加到一个方法中:
[AuthorizeRedirect]
public ActionResult Devices()
{
return View();
}
当我尝试以未授权的身份进入"设备"视图时,我不会被重定向到/error/unighted。我会被重定向到带有returnurl参数的常规帐户/登录名。
我做错了什么?
从代码中删除此行:基础OnAuthorization(filterContext);