MVC授权过滤器的应用分文三种。 例如我们已经创建了一个名为diyAuthAttribute的授权过滤器用于判断用户是否登录。如下图所示。 第一种:单个action应用 在控制器里找到对应的action,在上面写上过滤器名,如下图所示,此控制器内所有action只有booklist具有过滤器。 第二种:单个控制器内的所有action具有过滤器。 在控制器名称上面添加过滤器名,如下图所示,在store这个控制器里所有的action都具有过滤器。 第三种,解决方案里所有的控制器里的所有action里都具有过滤器。 在App_statr文件夹里的FilterConfig.cs文件里添加代码 filters.Add(new 过滤器名());如下图所示; 但是个人并不建议,比如我登录我的登录action,可是因为没登录转到过滤器,过滤器判断没登录,转到登录action,登录action又进入过滤器,,, 最终会形成一个死循环。
解决方案:针对上述现象,我们有两种解决方案。 方案1:如下图所示,在过滤器界面,相关解释都以注释的形式写上去了,if判断的是控制器的名称是否是登录action的控制器名称(我的登录ation放在loage控制器里)。 方案2:首先在拥有登录功能的action里增加AllowAnonymous特性,因为我得控制器只有一个action,所以我的特性写在最外面。如图所示
然后在过滤器里增加判断,对当前执行的控制器和action是否有AllowAnonymous特性,具体代码如图所示。
这两种方法就可以解决所有控制器都添加过滤器导致无法登陆的问题。