将数据从 AuthorizeCore 传递到 HandleUnauthorizedRequest,然后在 ASP.NET



我有一个处理未经授权的用户访问AuthorizeAttribute的自定义实现,如果我覆盖了以下方法:AuthorizeCore,然后HandleUnauthorizedRequest

  • 检查用户访问权限的逻辑AuthorizeCore.
  • 重定向到控制器/操作HandleUnauthorizedRequest

现在,我想知道如何将数据从授权核心发送到控制器/操作?按照该顺序:

  1. AuthorizeCore创建消息。
  2. HandleUnauthorizedRequest执行重定向并传递先前创建的消息。
  3. 控制器/操作接收消息。

注意:我不想通过查询字符串接收消息。

有几种方法可以做到这一点。您可以尝试添加:

filterContext.Controller.TempData["auth_fail_message"] = "Error message"; 

在处理未经授权的请求方法中。然后,您可以从错误操作中访问临时数据。
您也可以使用 asp.net 会话对象。

试试这个;

public string Messages { get; set; } // declare "Messages"
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
     Messages = "bla bla";// Or set in controller
     ....
     ....
     ....
     ....
     base.AuthorizeCore(httpContext); 
}

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
   Messages.ToString(); // Read Message ="bla bla"
   base.HandleUnauthorizedRequest(filterContext);
}

2.使用控制器设置消息的方法;

[CustomAuthorize(Messages = "Bla Bla Bla")]
public ActionResult Index()
{
    return View();
}

相关内容

最新更新