MVC与[授权]相反,或许类似于[DenyAuthorized] ..?

时间:2014-05-09 04:40:32

标签: c# asp.net-mvc asp.net-mvc-5

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 = "", }));
            }
        }
    }
}

有没有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

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

应该是这样的。