ASP.如果条件满足,重定向所有请求

本文关键字:请求 重定向 如果 条件 满足 ASP | 更新日期: 2023-09-27 18:02:29

我希望根据条件实现网站范围内重定向到我的MVC5应用程序。

我已经研究了将[Authorize]添加到我的基本控制器,但这将是不够的,因为我的站点在Windows身份验证上运行,但我需要验证用户是否存在于一个单独的,业务拥有的层次结构中,不与AD连接。

我研究了过滤器,并理解这里可能需要自定义动作过滤器。我试图实现这一正确的方式,这应该在项目内?

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if(StaffId == 0)
    {
        filterContext.Result = RedirectToAction("Error");
    }
}

ASP.如果条件满足,重定向所有请求

创建自定义的Authorize属性,如:

public class StaffOnlyAttribute : AuthorizeAttribute
{
  protected override bool AuthorizeCore(HttpContextBase httpContext)
  {
      return StaffId != 0;
  }
  protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
  {
      base.HandleUnauthorizedRequest(filterContext);
      filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "YourController", action = "Error" }));
  }
}

如果您的用户数量较少,我会将所有id放在一个单独的、业务拥有的层次结构中,放在缓存中(它将以一定的间隔从数据库中刷新自己),以节省时间,这样您就不会在每次请求时都访问数据库。

另一种方法是在他们登录后提供一个永不过期的cookie,表明他们也属于单独的业务拥有的层次结构。然后您可以读取该cookie并执行重定向。根据您的要求,可能需要对该cookie进行加密。