我有一个AuthorizeAttribute
的自定义实现,处理未经授权的用户访问,我覆盖了以下方法:AuthorizeCore
,然后是HandleUnauthorizedRequest
。
AuthorizeCore.
HandleUnauthorizedRequest
。现在,我想知道如何从AuthorizeCore向控制器/操作发送数据?遵循以下顺序:
AuthorizeCore
创建一条消息。HandleUnauthorizedRequest
执行重定向并传递先前创建的消息。注意:我不希望通过QueryString接收邮件。
答案 0 :(得分:0)
有几种方法可以做到这一点。您可以尝试添加:
filterContext.Controller.TempData["auth_fail_message"] = "Error message";
在HandleUnauthorizedRequest方法中。然后,您可以从错误操作中访问临时数据。
您也可以使用asp.net会话对象。
答案 1 :(得分:0)
试试这个;
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.Method使用控制器设置消息;
[CustomAuthorize(Messages = "Bla Bla Bla")]
public ActionResult Index()
{
return View();
}