过滤器主要基于特性,aop来实现对MVC管道中插入其他处理逻辑。比如,访问网站,需要检查是否已经登陆,若没登陆跳入登陆界面。
样例:
方法注册
执行效果
当不符合认证时:
上面是方法注册特性。还有类注册,全局注册。
类注册,注意加约束限制
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true)]
单单的仅是类定义会出现异常,陷入死循环。因为每次执行action(包括验证界面对应的action) 都会验证,每次都不符合验证条件,以至于循环进入验证界面
解决办法,加匿名特性,并在验证地方去支持它。
全局注册:
注意:有时候请求是网页访问;有时是ajax请求,需要返回一串json字符串。
原理:
先进入控制器,访问控制器的基类Execute方法