c# - MVC 与 [Authorize] 相反,也许类似于 [DenyAuthorized]..?

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

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

我正在尝试限制授权用户查看某些页面,例如注册页面。

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

我认为会有一个类似 [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 = "", }));
            }
        }
    }
}

有更好的方法吗?

最佳答案

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

事情应该如此。

关于c# - MVC 与 [Authorize] 相反,也许类似于 [DenyAuthorized]..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23556730/

相关文章:

c# - C# 中可能的意外引用比较

c# - 不同参数的过载 Action

c# - 设置 View 的文本框(日期时间字段)以显示只读当前日期时间

asp.net-mvc - Team Foundation Server 项目是否可以有不同的 web.config 文件?

asp.net-mvc - 传递到 Html.ActionLink 时序列化模型上的 IList 属性

c# - 如何正确地将 DropDownList 的 SelectedValue 从 View 发送到 Controller ? View 模型

c# - 使用 Url.action 或类似工具时控制日期格式

c# - ASP.NET MVC 5 在请求之间保留旧输入

c# - 使用 EF Core 防止同步 API 使用

c# - TaskCreationOptions.AttachedToParent 不等待子任务