.NET CoreMVC添加登录过滤器

1.添加过滤器类,继承ActionFilterAttribute,在类里面添加过滤器方法

public override void OnActionExecuting(ActionExecutingContext context)

{

        // 判断是否检查登录

        var noNeedCheck = false;

        if (context.ActionDescriptor is ControllerActionDescriptor controllerActionDescriptor)

        {

                noNeedCheck = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true).Any(a => a.GetType().Equals(typeof(NoSignAttribute)));

        }

        if (noNeedCheck) return;

        // 获取登录信息 - 这里采用Session来保存登录信息

        var UserName = context.HttpContext.Session.GetString("UserName");

        // 检查登录信息

        if (UserName == null)

        {

                // 用户未登录 - 跳转到登录界面

                context.Result = new RedirectResult("/Login/Index");

        }

        base.OnActionExecuting(context);

}

 .NET CoreMVC添加登录过滤器_第1张图片

2.添加不需要验证登录的特性,在不需要登陆的地方加个特性

public class NoSignAttribute : ActionFilterAttribute { }

.NET CoreMVC添加登录过滤器_第2张图片

3.在Startup类里面添加过滤器注册

services.AddMvc(config => config.Filters.Add(typeof(SignFilter))).SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

.NET CoreMVC添加登录过滤器_第3张图片

注:如果不需要验证,即在不需要验证的方法上面加入[NoSign]特性

.NET CoreMVC添加登录过滤器_第4张图片

你可能感兴趣的:(ASP.NET,Core,技术,记录,.netcore,mvc)