onceperrequestfilter(Shiro中的filter)

:暂无数据 2026-08-13 02:50:28 :0

onceperrequestfilter(Shiro中的filter)

各位老铁们好,相信很多人对onceperrequestfilter都不是特别的了解,因此呢,今天就来为大家分享下关于onceperrequestfilter以及Shiro中的filter的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

Shiro中的filter

DefaultFilter

shiro中提供的默认filter

FilterChainManager

通过配置创建对应的filterChain

Shiro通过此配置可初始化FilterChainManager中的filterChain,结构为 url -》filter列表

SpringShiroFilter

入口filter,拦截所有请求,通过请求的url匹配到对应的filterChain,然后通过Chain对请求进行,认证或者授权的处理

OncePerRequestFilter

OncePerRequestFilter 用于防止多次执行 Filter;也就是说一次请求只会走一次拦截器链;

另外提供 enabled 属性,表示是否开启该拦截器实例

实现了 doFilter 方法,提供了抽象方法 doFilterInternal 。

在doFilter中验证当前的Filter有没有执行过,如果已经执行过一次或者当前filter被禁用,则直接执行下一个Filter。如果没有执行过则执行 doFilterInternal 方法

AbstractShiroFilter

创建Subject,绑定subject到当前线程,根据url获取filterChain并执行filterChain

PathMatchingFilterChainResolver

通过请求的url来匹配FilterChainManager中的FilterChain,这个方法会返回一个 ProxiedFilterChain

ProxiedFilterChain

存储了tomcat的Filter 和shiro内部的filter

shiro内部的过滤器执行完后会切换到tomcat的过滤器继续执行

默认filter

除了LogoutFilter,其他都继承了AdviceFilter

AdviceFilter

AdviceFilter 提供了 AOP 风格的支持,类似于 SpringMVC 中的 Interceptor:

权限验证在preHandle中实现

PathMatchingFilter

PathMatchingFilter 提供了基于 Ant 风格的请求路径匹配功能及拦截器参数解析的功能,如

“ /admin roles ”自动根据 “,” 分割,解析成 /admin -》 存入 appliedPaths 中

实现了 preHandle 方法,通过请求的url匹配url对应的权限,解析权限串 调用子类的 onPreHandle 对权限进行处理

AnonymousFilter

提供匿名访问功能,实现了 onPreHandle 直接返回true,所以配置 anon 的url任何人都可以访问

AccessControlFilter

提供了资源访问控制的基础功能

实现了 onPreHandle ,这里拆分出了

isAccessAllowed (是否允许访问)和 onAccessDenied (访问被拒绝时)这两个方法供子类实现

AuthenticationFilter

实现了 isAccessAllowed 方法,验证用户是否已经登录,没有登录将被拒绝

FormAuthenticationFilter

继承自 AuthenticationFilter 只有用户登录过后才能通过

实现了 onAccessDenied 方法,如果请求的地址是登录地址,这里会尝试自动登录,否则跳转到登录页面

BasicHttpAuthenticationFilter

提供了基于 HttpBasic认证的方式

AuthorizationFilter

实现了 onAccessDenied 方法,如果没有认证通过,则跳转到登录或者认证失败的页面

PermissionsAuthorizationFilter

对用户所访问资源的权限进行认证

HttpMethodPermissionFilter

将HTTP请求的方法(例如GET、POST等)转换为相应的动作并构造一个相应的权限

如get 被转换为 read,put 转换为 update,post转换为create等

权限配置:/users perms

请求: get /users

将会验证 用户是否拥有users:read权限

RolesAuthorizationFilter

验证用户是否用对对应的角色

UserFilter

实现了 isAccessAllowed 和 onAccessDenied 方法,验证用户是否登录过,如果验证未通过则跳转到登录页面

hiddenhttpmethodfilter 有什么用

HiddenHttpMethodFilter的父类是OncePerRequestFilter,它继承了父类的doFilterInternal方法,工作原理是将jsp页面的form表单的method属性值在doFilterInternal方法中转化为标准的Http方法,即GET,、POST、 HEAD、OPTIONS、PUT、DELETE、TRACE,然后到Controller中找到对应的方法。例如,在使用注解时我们可能会在Controller中用于@RequestMapping(value = "list", method = RequestMethod.PUT),所以如果你的表单中使用的是《form method="put"》,那么这个表单会被提交到标了Method="PUT"的方法中。
需要注意的是,由于doFilterInternal方法只对method为post的表单进行过滤,所以在页面中必须如下设置:
view plaincopy
《form action="..." method="post"》
《input type="hidden" name="_method" value="put" /》
......
《/form》
而不是使用:
view plaincopy
《form action="..." method="put"》
......
《/form》
同时,HiddenHttpMethodFilter必须作用于dispatcher前,所以在web.xml中配置HiddenHttpMethodFilter时,需参照如下代码:
view plaincopy
《filter》
《filter-name》HiddenHttpMethodFilter《/filter-name》
《filter-class》org.springframework.web.filter.HiddenHttpMethodFilter《/filter-class》
《/filter》
《filter-mapping》
《filter-name》HiddenHttpMethodFilter《/filter-name》
《servlet-name》spring《/servlet-name》
《/filter-mapping》
《servlet》
《servlet-name》spring《/servlet-name》
《servlet-class》org.springframework.web.servlet.DispatcherServlet《/servlet-class》
《init-param》
《param-name》contextConfigLocation《/param-name》
《param-value》classpath:dispatcher.xml《/param-value》
《/init-param》
lt;/servlet》
《servlet-mapping》
《servlet-name》spring《/servlet-name》
《url-pattern》*.html《/url-pattern》
lt;/servlet-mapping》
同样的,作为Filter,可以在web.xml中配置HiddenHttpMethodFilter的参数,可配置的参数为methodParam,值必须为GET,、POST、 HEAD、OPTIONS、PUT、DELETE、TRACE中的一个。

关于onceperrequestfilter,Shiro中的filter的介绍到此结束,希望对大家有所帮助。

onceperrequestfilter(Shiro中的filter)

本文编辑:admin

更多文章:


双色球浙江风采超长版2005(2005年浙江超长版双色球走势图)

双色球浙江风采超长版2005(2005年浙江超长版双色球走势图)

本篇文章给大家谈谈双色球浙江风采超长版2005,以及2005年浙江超长版双色球走势图对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 03:20

深圳龙华人民医院疑似病例(西安新增2例确诊1例初筛阳性,当地针对此情况采取了哪些措施)

深圳龙华人民医院疑似病例(西安新增2例确诊1例初筛阳性,当地针对此情况采取了哪些措施)

本篇文章给大家谈谈深圳龙华人民医院疑似病例,以及西安新增2例确诊1例初筛阳性,当地针对此情况采取了哪些措施对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月11日 02:40

林俊杰现在还属华纳吗(林俊杰现在还是华纳的艺人吗)

林俊杰现在还属华纳吗(林俊杰现在还是华纳的艺人吗)

其实林俊杰现在还属华纳吗的问题并不复杂,但是又很多的朋友都不太了解林俊杰现在还是华纳的艺人吗,因此呢,今天小编就来为大家分享林俊杰现在还属华纳吗的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 00:20

乌克兰军事威胁俄罗斯代表(俄罗斯平静面对西方制裁,这个国家为什么这么有底气呢)

乌克兰军事威胁俄罗斯代表(俄罗斯平静面对西方制裁,这个国家为什么这么有底气呢)

大家好,如果您还对乌克兰军事威胁俄罗斯代表不太了解,没有关系,今天就由本站为大家分享乌克兰军事威胁俄罗斯代表的知识,包括俄罗斯平静面对西方制裁,这个国家为什么这么有底气呢的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月10日 23:40

网通公司拉网线(怎么才能让网通公司给乡下拉网线)

网通公司拉网线(怎么才能让网通公司给乡下拉网线)

各位老铁们好,相信很多人对网通公司拉网线都不是特别的了解,因此呢,今天就来为大家分享下关于网通公司拉网线以及怎么才能让网通公司给乡下拉网线的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月10日 23:30

夜场bbs是什么意思网络语(晚上一起bbs什么意思)

夜场bbs是什么意思网络语(晚上一起bbs什么意思)

大家好,关于夜场bbs是什么意思网络语很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于晚上一起bbs什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月10日 21:30

雷诺曼牌36张牌义(雷诺曼36张和47张的区别)

雷诺曼牌36张牌义(雷诺曼36张和47张的区别)

大家好,雷诺曼牌36张牌义相信很多的网友都不是很明白,包括雷诺曼36张和47张的区别也是一样,不过没有关系,接下来就来为大家分享关于雷诺曼牌36张牌义和雷诺曼36张和47张的区别的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开

2026年10月10日 21:20

免费成品在线视频网页版(成品视频直播软件推荐)

免费成品在线视频网页版(成品视频直播软件推荐)

大家好,如果您还对免费成品在线视频网页版不太了解,没有关系,今天就由本站为大家分享免费成品在线视频网页版的知识,包括成品视频直播软件推荐的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月10日 21:00

台湾明年会边境解封(中国入境政策)

台湾明年会边境解封(中国入境政策)

其实台湾明年会边境解封的问题并不复杂,但是又很多的朋友都不太了解中国入境政策,因此呢,今天小编就来为大家分享台湾明年会边境解封的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月10日 20:50

微信使用代理是什么意思(安装微信时出现“正在使用代理上网,请关闭代理再安装”,是什么意思)

微信使用代理是什么意思(安装微信时出现“正在使用代理上网,请关闭代理再安装”,是什么意思)

各位老铁们好,相信很多人对微信使用代理是什么意思都不是特别的了解,因此呢,今天就来为大家分享下关于微信使用代理是什么意思以及安装微信时出现“正在使用代理上网,请关闭代理再安装”,是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下

2026年10月10日 19:10

最近更新

withdrawal(withdrawal是什么意思)
2026-10-11 07:00:01 浏览:0
热门文章

标签列表