.Net Core MVC全局过滤器验证是否需要登录
1.新增全局登录过滤器LoginCheckAttribute
1 public class LoginCheckAttribute: ActionFilterAttribute
2 {
3 public override void OnActionExecuting(ActionExecutingContext filterContext)
4 {
5 // 判断是否检查登陆
6 var noNeedCheck = false;
7 string msg = filterContext.HttpContext.Request.Path;
8
9 if (filterContext.ActionDescriptor is ControllerActionDescriptor controllerActionDescriptor)
10 {
11 noNeedCheck = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true)
12 .Any(a => a.GetType().Equals(typeof(NoNeedLoginAttribute)));
13 }
14 if (noNeedCheck) return;
15
16 bool isLogin = filterContext.HttpContext.Session.GetString("_Name") !=null?true:false;//你的验证是否登录方法
17 if (!isLogin)
18 {
19 filterContext.HttpContext.Response.Redirect("/Account/Login", true);//跳转登录页面
20 }
21
22 base.OnActionExecuting(filterContext);
23 }
24 }
2.新增无需登录过滤器NoNeedLoginAttribute
1 public class NoNeedLoginAttribute: ActionFilterAttribute
2 {
3 public override void OnActionExecuting(ActionExecutingContext filterContext)
4 {
5 base.OnActionExecuting(filterContext);
6
7 }
8 }
3.Startup.cs页面添加配置
1 public void ConfigureServices(IServiceCollection services)
2 {
3 //全局过滤器
4 services.AddMvc(config => config.Filters.Add(new LoginCheckAttribute()));
5 }
4.控制器中使用
1 public class AccountController : Controller
2 {
3 [NoNeedLogin]
4 public IActionResult Login()
5 {
6 return View();
7 }
8 }
PS:刚开始学习.net Core 有不对的地方,请大家帮忙指正。另外有没有直接在控制器上过滤的,有知道的朋友请在评论中帮忙解答下,谢谢!
例:
1 public class LoginCheckAttribute: ActionFilterAttribute
2 {
3 public bool IsChecked { get; set; }
4 public override void OnActionExecuting(ActionExecutingContext filterContext)
5 {
6
7 if (IsChecked)
8 {
9 bool isLogin = filterContext.HpptContext.Session.GetString("_Name")!=null? true:false;//你的验证是否登录方法
10 if (!isLogin)
11 {
12 filterContext.HttpContext.Response.Redirect("/Account/Login", false);
13 }
14 }
15
16 base.OnActionExecuting(filterContext);
17 }
18 }
19
20
21 //Startup.cs页面添加配置
22 public void ConfigureServices(IServiceCollection services)
23 {
24 //全局过滤器
25 services.AddMvc(config => config.Filters.Add(new LoginCheckAttribute(){IsChecked = true}));
26 }
27
28
29 //控制器
30 //1.该控制器不需要验证登录
31 [LoginCheck(IsChecked = false)]
32 public class AccountController : Controller
33 {
34 public IActionResult Login()
35 {
36 return View();
37 }
38 }
39
40
41 //2.该控制器需要验证是否登录
42 public class UserController : Controller
43 {
44 public IActionResult Index()
45 {
46 return View();
47 }
48 }
.Net Core MVC全局过滤器验证是否需要登录的更多相关文章
- asp.net mvc 自定义全局过滤器 验证用户是否登录
一般具有用户模块的系统都需要对用户是否登录进行验证,如果用户登录了就可以继续操作,否则退回用户的登录页面 对于这样的需求我们可以通过自定义一个独立的方法来完成验证的操作,但是这样代码的重复率就大大提高 ...
- 一、Core基于MVC的全局过滤器验证
一.Core基于MVC的过滤器验证 1.添加一个过滤器.在Startup 中ConfigureServices方法里添加一个Filters 即我们自己授权代码类. public void Config ...
- asp.net core MVC 全局过滤器之ExceptionFilter异常过滤器(一)
本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter异常过滤器(一) asp.net cor ...
- MVC 自定义过滤器/特性来实现登录授权及验证
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 最近在做自学MVC,遇到的问题很多,索性一点点总结 ...
- .net core MVC Filters 过滤器介绍
一.过滤器的优级依次介绍如下(逐次递减): Authorization Filter -> Resource Filter -> Acton Filter -> Exception ...
- ASP.NET Core MVC 之过滤器(Filter)
ASP.NET MVC 中的过滤器允许在执行管道中的特定阶段之前或之后运行代码.可以对全局,也可以对每个控制器或每个操作配置过滤器. 1.过滤器如何工作 不同的过滤器类型在管道中的不同阶段执行,因此具 ...
- .Net Core MVC中过滤器简介
在.Net Framework MVC 中有四种过滤器,授权过滤器(Authorize).Action 过滤器.结果过滤器(Result).异常过滤器(Exception)四种过滤器.在.Net Co ...
- Mvc全局过滤器与Action排除
http://blog.csdn.net/shuaihj/article/details/53020428 如何一次性给所有action做登录验证过滤,如何排除不需要做登录验证的action? 1. ...
- mvc全局过滤器和httpmodule的执行顺序
根据http管线模型,请求先通过httpmodule,再通过httphandler,之后再进入mvc的过滤器 另外参考:MVC如何在Pipeline中接管请求的? http://www.cnblogs ...
随机推荐
- bsp工程管理
1. bsp工程管理的目的 模块化项目,使得项目清晰 2. 代码 拷贝原来工程 创建文件夹 bsp就是工程驱动文件 imx6ull是和芯片有关的文件 obj是生成文件的文件夹 project 工程文件 ...
- 力扣 - 剑指 Offer 10- I. 斐波那契数列
题目 剑指 Offer 10- I. 斐波那契数列 思路1(递归 / 自顶向下) 这题是很常见的一道入门递归题,可以采用自顶向下的递归方法,比如我们要求第n个位置的值,根据斐波那契数列的定义fib(n ...
- (前端)面试300问之(3)this的指向判断
一.this的相关理解与解读 1.各角度看this. 1)ECMAScript规范: this 关键字执行为当前执行环境的 ThisBinding. 2)MDN: In most cases, the ...
- BehaviorTree.CPP行为树BT的装饰器节点(五)
Decorators 装饰器是只能有一个子项的节点. 由装饰者来决定是否,何时以及对子节点进行tick. InverterNode tick子节点一次,如果子节点失败则返回SUCCESS,如果孩子成功 ...
- Atcoder Grand Contest 031 D - A Sequence of Permutations(置换+猜结论)
Atcoder 题面传送门 & 洛谷题面传送门 猜结论神题. 首先考虑探究题目中 \(f\) 函数的性质,\(f(p,q)_{p_i}=q_i\leftarrow f(p,q)\circ p= ...
- R语言与医学统计图形【3】条形图、误差图
R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...
- R语言与医学统计图形-【33】生存曲线、森林图、曼哈顿图
1.生存曲线 基础包survival+扩展包survminer. survival包内置肺癌数据集lung. library(survival) library(survminer) str(lung ...
- CentOS6.9 内核升级详解
内核进行的是应用软件和计算机硬件的交互工作在计算机科学中,内核(英语:kernel)又称核心,是一个计算机程序,用来管理软件发出的数据I/O(输入与输出)要求,将这些要求转译为数据处理的指令,交由中央 ...
- mysql-日期时间函数大全
DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,--7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03'); ...
- 编程艺术第十六~第二十章:全排列/跳台阶/奇偶调序,及一致性Hash算法
目录(?)[+] 第十六~第二十章:全排列,跳台阶,奇偶排序,第一个只出现一次等问题 作者:July.2011.10.16.出处:http://blog.csdn.net/v_JULY_v. 引言 ...