在实现ActionFilterAttribute的类中重定向
本文关键字:重定向 实现 ActionFilterAttribute | 更新日期: 2023-09-27 18:06:38
public class AdministratorAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
{
EFUserRepository repo = new EFUserRepository();
var user = repo.FindUserByUserName(filterContext.HttpContext.User.Identity.Name);
if (user.UserRole.Name == "Administrator")
{
filterContext.Result = new RedirectToRouteResult(//Redirect to the original action they tried to enter?
}
}
else
{
//redirect to the "Home/Index" area.
}
}
}
我有麻烦重定向到一个动作从这个onactionexecution方法。此外,如果用户已获得完全授权,我如何将用户重定向到他们最初的预期操作。
这个[Administrator]
属性将被放置在许多不同的控制器上,所以我必须有一种方法来重定向到适当的ActionResult,他们试图达到
通常的方法是,至少对于GET来说,对请求的url进行url编码并包含它。例如,对于SO,如果我们以匿名开始这个问题,然后单击login,我们将被带到
https://stackoverflow.com/users/login?returnurl=%2fquestions%2f7182675%2fredirecting-in-a-class-that-implements-the-actionfilterattribute
同样适用于重定向;完成登录后,检查returnurl
参数,然后返回。