MVC 5 AuthorizeAttribue - 不要将用户重定向到错误页面而是在弹出窗口中显示消息

时间:2016-02-23 11:33:15

标签: asp.net-mvc-5

我正在使用MVC5开发自定义AuthorizeAttribute。我想检查是否允许用户访问某个操作。选择/点击链接系统时,应检查用户是否有权访问该链接。如果用户未获得授权,则将用户保持在同一视图中并在弹出窗口中显示授权消息。

public override void OnAuthorization(AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);
        if (!IsOwner(filterContext))
        {
            filterContext.Controller.TempData["Authorisedmessage"] = "You do not have sufficient privileges for this operation.";
            var currentpageUrl = HttpContext.Current.Request.UrlReferrer;
filterContext.RequestContext.HttpContext.Response.Redirect(currentpageUrl.ToString(), true);
        }
    }

它将用户保持在同一页面上,但在页面上放置了@ Html.AntiForgeryToken时出错。

为迎合这种情况需要做些什么。

1 个答案:

答案 0 :(得分:0)

解决了它,这是一种解决方法,但它解决了这个问题。

IN OnAuthorization方法,我解析了HttpContext.Current.Request.UrlReferrer.LocalPath&通过在routeValues中分配控制器名称来手动创建路由。 例如,我已将控制器名称指定为routeValues [" controller"]并且类似地分配了操作&参数值。

代码如下所述:

\r

现在从TempData [" AuthorizationFailed"]中读取值以显示消息。 感谢