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");
}
}
创建自定义的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进行加密。