MVC5中拦截器跳转登录页面
public class ExceptionFillters : FilterAttribute, IExceptionFilter { public void OnException(ExceptionContext filterContext) { throw new System.NotImplementedException(); } } public class ActionFillters : FilterAttribute, IActionFilter { public void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.RequestContext.HttpContext.Session == null) return; var token = filterContext.RequestContext.HttpContext.Session["userId"]; if (token == null) { filterContext.RequestContext.HttpContext.RedirectLocal("/Role/LoginHome"); } //执行action后执行这个方法 比如做操作日志 } public void OnActionExecuting(ActionExecutingContext filterContext) { //执行action前执行这个方法,比如做身份验证 } } public class ResultFillters : FilterAttribute, IResultFilter { public void OnResultExecuted(ResultExecutedContext filterContext) { //执行完action后跳转后执行 } public void OnResultExecuting(ResultExecutingContext filterContext) { //执行完action后跳转前执行 } }
实现这几个方法后
在控制器中的视图方法上加入
[ResultFillters] [ActionFillters] [ExceptionFillters] public ActionResult Index(int currentPageIndex = 1) { return View(); }
这就实现了拦截,未登录的用户,session为null是跳到登录页面