与[authorization]相对的MVC,也许类似于[DenyAuthorized]…

本文关键字:也许 类似于 DenyAuthorized authorization 相对 MVC | 更新日期: 2023-09-27 18:02:34

MVC5中是否有一个属性允许我拒绝授权用户访问某些页面?

我试图限制授权用户查看某些页面,如注册页面。

目前用户可以浏览到我的注册页面,如果他们知道网址,即使他们已经注册。

我认为会有一个属性像[DenyAuthorized],或者有另一种方法来做到这一点?

我认为这是一个相当普遍的需求,我可能没有实现正确的东西。

我写了一个简短的属性,它确实工作,但我不相信这是最好的方法:

public class DenyAuthorized : AuthorizeAttribute
{
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            if (filterContext.HttpContext.Request.UrlReferrer != null)
            {
                filterContext.Result = new RedirectResult(filterContext.HttpContext.Request.UrlReferrer.AbsoluteUri);
            }
            else
            {
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Index", controller = "Home", area = "", }));
            }
        }
    }
}

是否有更好的方法来做到这一点?

与[authorization]相对的MVC,也许类似于[DenyAuthorized]…

最好的方法是在登录/注册操作中检查用户的登录状态,如果用户已经登录,则将其重定向到仪表板/主页/登陆页面。