MVC全局验证登陆信息

1.新建LoginRequestFilter类

 public class LoginRequestFilter : System.Web.Mvc.ActionFilterAttribute
    {
        public bool IsCheck { get; set; } = true;

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (IsCheck)
            {
                if (HasLogin(filterContext))
                {
                    base.OnActionExecuting(filterContext);
                }
                else
                {
                    filterContext.HttpContext.Response.Redirect("/Login/Index");
                }
            }
            else
            {
                base.OnActionExecuting(filterContext);
            }
        }

        private bool HasLogin(ActionExecutingContext filterContext)
        {
            HttpContextBase httpContext = filterContext.HttpContext;
            if (httpContext.Session["UserName"] == null || httpContext.Session["Pwd"] == null)
            {
                return false;
            }
            return true;
        }
    }

2.FilterConfig设置全局验证

public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());

            //注册全局过滤器验证
            filters.Add(new LoginRequestFilter());
        }
    }

3排除登陆方法,让其不验证

 [LoginRequestFilter(IsCheck =false)]
    public class LoginController : BaseController
    {

        public ActionResult Index()
        {
            return View();
        }

        /// <summary>
        /// 测试界面
        /// </summary>
        /// <returns></returns>
        public ActionResult Test()
        {
            return View();
        }
    }

 

猜你喜欢

转载自www.cnblogs.com/xinyibufang/p/10576701.html