ASP.NET Mvc 简单的 action全局拦截器(过滤器)
1.创建一个类 继承:ActionFilterAttribute
public class ActionFilter : ActionFilterAttribute
{
#region 是否登录
public bool IsLogin { get; set; }
#endregion
#region 执行action前执行这个方法
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var varget= filterContext. HttpContext.Session["UserInfo"];
if (IsLogin==false)
{
if (varget==null)
{
filterContext.Result = new RedirectResult("/Login/Index");
}
return;
}
}
#endregion
}
在文件夹 App_Start下的 FilterConfig.cs中加上:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new ActionFilter());
}
}
这样一个简单的全局拦截器就完成了
在访问其他页面时一旦Session["UserInfo"]为空 跳转到"/Login/Index" 登录页
在登录页无需判断 否则会一直重复跳转 在Index加上:
[ActionFilter(IsLogin=true)]
[ActionFilter(IsLogin=true)]
public ActionResult Index()
{
return View();
}
[ActionFilter(IsLogin = true)]
public ActionResult CheckUser()
{
CheckUser 方法 是判断 账号和密码是否正确的方法也需要不做判断