我正在使用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时出错。
为迎合这种情况需要做些什么。
答案 0 :(得分:0)
解决了它,这是一种解决方法,但它解决了这个问题。
IN OnAuthorization方法,我解析了HttpContext.Current.Request.UrlReferrer.LocalPath&通过在routeValues中分配控制器名称来手动创建路由。 例如,我已将控制器名称指定为routeValues [" controller"]并且类似地分配了操作&参数值。
代码如下所述:
\r
现在从TempData [" AuthorizationFailed"]中读取值以显示消息。 感谢