Mvc全局过滤器与Action排除
http://blog.csdn.net/shuaihj/article/details/53020428
如何一次性给所有action做登录验证过滤,如何排除不需要做登录验证的action?
1. 如何让某个Action未登录就不能执行?
先封装一个判断是否登录的函数。
目标Action中调用这个函数,如果未登录,跳转登录Action
2. 如果Controller中有很多Action都要处理怎么办?
可以自定义一个过滤器
给每个需要做登录检查的action打上这个标签
3. 这样还是麻烦,每个Action都要打标签吗?
也可以给Controller这个层级打标签,对内部所有Action都有效
4. 如果项目中有很多Controller,每个都要打一遍吗?
有两个方法:
4.1.声明一个BaseController:Controller,在这个基类上打标签
让需要做登录验证的Controller都继承自BaseController
4.2使用全局过滤器
应用启动的时候注册全局过滤器,会对所有Controller的Action起作用
5. 可是我的首页和登录Action是不需要做过滤的,怎么排除?
修改过滤器,增加一个是否需要检查的属性
只给不需要做检查的Action或者Controller打上不需要做检查的标签即可
全局过滤器注册的时候,要注册为需要检查
6. 回头审视一下我们的基类BaseController
继承自Controller类,它本身已经继承了IActionFilter接口,我们只要override这个接口的方法,就可以了。所有继承自这个基类的Controller就都可以做登录验证了,基类也不需要打标签了,相当于把过滤器的业务逻辑,转移到这个方法中:
在子类中控制是否需要做登录检查
这个方法的问题是:没有办法对子类的Action单独控制是否做检查。
非要做也可以,那就要再定义一个标签Atrribute,来标识不需要检查,在BaseController父类中通过反射检查action是否打了这个不需要检查的标签。
但是这样有点绕了,不如用全局过滤器方便!
Mvc全局过滤器与Action排除的更多相关文章
- MVC全局过滤器
Asp.NET MVC4中的全局过滤器,可以对整个项目进行全局监控. 新建一个MVC4项目,可以在global.asax文件中看到如下代码: FilterConfig.RegisterGlobalF ...
- mvc全局过滤器和httpmodule的执行顺序
根据http管线模型,请求先通过httpmodule,再通过httphandler,之后再进入mvc的过滤器 另外参考:MVC如何在Pipeline中接管请求的? http://www.cnblogs ...
- .Net Core MVC全局过滤器验证是否需要登录
1.新增全局登录过滤器LoginCheckAttribute 1 public class LoginCheckAttribute: ActionFilterAttribute 2 { 3 publi ...
- MVC 全局过滤器
1. 新创建一个类 CheckLogin2. 在类中加入以下代码 public class CheckLogin : ActionFilterAttribute { public override v ...
- ASP.NET MVC 全局过滤器(FilterConfig)、标记在控制器上和方法上的筛选器执行顺序
FilterConfig->控制器上的筛选器-->方法上的筛选器(大-->小,上-->下) 全局-->控制器->个别 尝试的时候记得把返回true protecte ...
- MVC 全局拦截aciton
上篇:MVC 拦截指定的action 有时,我们需要对所有aciton在执行前/后做一些(预)处理,如何实现呢? 1.定义一个action筛选类.继承至System.Web.Mvc.IActionFi ...
- MVC中使用Action全局过滤器出现:网页无法正常运作 将您重定向的次数过多。解决办法
前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...
- MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用
前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...
- 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器
MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...
随机推荐
- session 超时设置
Java Web开发Session超时设置 博客分类: Java Web 在Java Web开发中,Session为我们提供了很多方便,Session是由浏览器和服务器之间维护的.Session超时理 ...
- Azure Pipelines
https://docs.microsoft.com/en-us/azure/devops/pipelines/?view=vsts
- python模拟android屏幕高频点击工具
一.环境 windows 10 + python3.6 二.需求 1.模拟android设备高频点击事件: 2.模拟规定次数的点击事件或模拟规定时间内的点击事件: 三.code 1.模拟规定时间内的 ...
- Confluence代码块(Code Block)宏
有时候现在wiki上插入代码,如何让代码高亮,变的有颜色,下面这篇文章可能会帮助你,先看下django代码高亮效果图 代码块(Code Block)宏允许你在 Confluence 页面中显示代码,并 ...
- mysql 索引 和mysql 的引擎
1.索引的特点 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度. ...
- MongoDB 数据库(2)
db.collectionName 集合对象 获取集合对象 db.getCollection('collection_name') e.g. db.getCollection("class0 ...
- MSSQL 数据库性能优化
优化数据库的注意事项: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化. 5.清理删除日志. SQL语句优化的基本原 ...
- 我用.htaccess做了些什么?
1.防图片盗链,减轻流量压力: 2.index.php 301转向到域名,有利于PR权重集中: 3.其它还不会,慢慢来…… 我是如何做的? <IfModule mod_rewrite.c> ...
- jmeter===JMeter 中Random 随机函数的使用(转)
原文:http://blog.csdn.net/dreamtl/article/details/68952272 场景:在做接口测试时,比如说要求用户的手机号码不允许重复,那此时可以通过Random ...
- 2016多校第4场 HDU 6076 Security Check DP,思维
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6076 题意:现要检查两条队伍,有两种方式,一种是从两条队伍中任选一条检查一个人,第二种是在每条队伍中同 ...