.net core 登入全域性驗證過濾器

xsc19960102_發表於2018-03-04

最近公司再用.net core做專案。 碰到了登入驗證許可權這一塊。使用過濾器不需要每個方法上都去判斷登入是否失效。有的時候還會忘記對驗證

希望對大家有幫助



mvc core的寫法:

public class PermissionRequiredAttribute : ActionFilterAttribute
    {  

public override void OnActionExecuting(ActionExecutingContext filterContext)

        {
            var isDefined = false;
            var controllerActionDescriptor = filterContext.ActionDescriptor as ControllerActionDescriptor;
            if (controllerActionDescriptor != null)
            {
                 isDefined = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true)
                    .Any(a => a.GetType().Equals(typeof(NoPermissionRequiredAttribute)));
            }
            if (isDefined) return;
                if (MyHttpContext.Current.Session.GetString("LoginInfo") == null)
                {  
                    filterContext.Result = new RedirectResult("/Account/Login");
                }
            base.OnActionExecuting(filterContext);

        }

}

//不需要登入

public class NoPermissionRequiredAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
        }

    }

 //在不需要的方法上面打上標記

  [NoPermissionRequired]
        public ActionResult Login()

        {

      }



相關文章