1.配置全局类。在APP_START里打开FilterConfig.cs
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// filters.Add(new HandleErrorAttribute()); //默认
filters.Add(new ActionFilter(){IsLogin = true});
}
}
2.新建ActionFilter.cs
public class ActionFilter : ActionFilterAttribute
{
#region 是否登录
public bool IsLogin { get; set; }
#endregion
#region 执行action-前执行
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var getUserInfo = filterContext.HttpContext.Session["UserInfo"];
if (IsLogin == true)
{
if ( getUserInfo == null)
{
try
{
filterContext.HttpContext.Response.Redirect("/home/login");
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
}
#endregion
}
3.在登录控制器里添加(添加方法头上,只是对于当前方法有效。如果想在整个控制器有效果,就在控制器头上添加 [ActionFilter(IsLogin = false)])
[ActionFilter(IsLogin = false)] //IsLogin = false 不需要拦截,true反之
public ActionResult login()
{
return View();
}
有问题可以评论,一起解决!