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排除的更多相关文章

  1. MVC全局过滤器

    Asp.NET MVC4中的全局过滤器,可以对整个项目进行全局监控. 新建一个MVC4项目,可以在global.asax文件中看到如下代码:  FilterConfig.RegisterGlobalF ...

  2. mvc全局过滤器和httpmodule的执行顺序

    根据http管线模型,请求先通过httpmodule,再通过httphandler,之后再进入mvc的过滤器 另外参考:MVC如何在Pipeline中接管请求的? http://www.cnblogs ...

  3. .Net Core MVC全局过滤器验证是否需要登录

    1.新增全局登录过滤器LoginCheckAttribute 1 public class LoginCheckAttribute: ActionFilterAttribute 2 { 3 publi ...

  4. MVC 全局过滤器

    1. 新创建一个类 CheckLogin2. 在类中加入以下代码 public class CheckLogin : ActionFilterAttribute { public override v ...

  5. ASP.NET MVC 全局过滤器(FilterConfig)、标记在控制器上和方法上的筛选器执行顺序

    FilterConfig->控制器上的筛选器-->方法上的筛选器(大-->小,上-->下) 全局-->控制器->个别 尝试的时候记得把返回true protecte ...

  6. MVC 全局拦截aciton

    上篇:MVC 拦截指定的action 有时,我们需要对所有aciton在执行前/后做一些(预)处理,如何实现呢? 1.定义一个action筛选类.继承至System.Web.Mvc.IActionFi ...

  7. MVC中使用Action全局过滤器出现:网页无法正常运作 将您重定向的次数过多。解决办法

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

  8. MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

  9. 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器

    MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...

随机推荐

  1. java 课后作业

    杨辉三角 组合数 public class YH { public static void main(String agrs[]) { int a[5][5],i,j; for(i = 0;i < ...

  2. springboot-为内置tomcat设置虚拟目录

    需求 项目使用springboot开发,以jar包方式部署.项目中文件上传均保存到D判断下的upload目录下. 在浏览器中输入http://localhost:8080/upload/logo_1. ...

  3. SpringMVC中ModelAndView addObject()设置的值jsp取不到的问题

    controller public class HelloWorldController implements Controller { public ModelAndView handleReque ...

  4. [Luogu 4092] HEOI/TJOI2016 树

    [Luogu 4092] HEOI/TJOI2016 树 搜了树剖标签不知道怎么就跳出了个暴搜题啊! 管他既然做了就发上来吧- 有修改标签就向下搜并修改,遇到标签即停止. 这题是真的真的短. #inc ...

  5. 【BZOJ3191】【JLOI2013】卡牌游戏 [DP]

    卡牌游戏 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description   N个人坐成一圈玩游戏.一开始我 ...

  6. Intersecting Lines (计算几何基础+判断两直线的位置关系)

    题目链接:http://poj.org/problem?id=1269 题面: Description We all know that a pair of distinct points on a ...

  7. [bzoj3993][SDOI2015]星际战争-二分+最大流

    Brief Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai. ...

  8. 数字签名算法rsa

    数字签名算法消息传递模型 由消息发送方构建密钥对,这里由甲方完成. 由消息发送方公布公钥至消息接收方,这里由甲方将公钥公布给乙方. 注意如加密算法区别,这里甲方使用私钥对数据签名,数据与签名形成一则消 ...

  9. Python3 嵌套函数

    嵌套函数: 函数体内用def定义函数 注意:函数体中调用其他函数不算嵌套函数,只能是函数的调用 简单的嵌套函数: 输出结果:

  10. (十七)vmware无法将网络更改为桥接状态

    故障现象,导致虚拟机无法正常上网 设备管理器中的驱动设备正常加载,但是注意这两个虚拟网卡是有问题的 将这两个虚拟网卡删除 只剩物理网卡了,重新启动电脑 将虚拟机里的网络设置删除 清空网卡后点击恢复默认 ...