web中
在xml中配置
<filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <async-supported>true</async-supported> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter>
web.xml 中配置了shiroFilter代理,以后每当request请求时都会被改代理拦截,然后代理中调用真正的被代理filter执行处理(还没有弄清楚真正的代理对象怎么变成Filter)
DelegatingFilterProxy中初始化 delegate的过程
根据该<filter>配置中的 <filter-name>=shiroFilter去spring工厂中getBean("shiroFilter",Filter.class) 最终获取到
org.apache.shiro.spring.web.ShiroFilterFactoryBean 的一个单实例,可以看到 ShiroFilterFactoryBean没有实现任何Filter接口,
Filter delegate = wac.getBean(getTargetBeanName(), Filter.class); 生成该Filter
被代理的对象 org.apache.shiro.spring.web.ShiroFilterFactoryBean
Spring生成的是ShiroFilterFactoryBean代理对象 实际上是个Filter
在spring.xml中配置
<!-- Shiro的Web过滤器 --> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <property name="loginUrl" value="/login.jsp"/> <property name="unauthorizedUrl" value="/unauthorized.jsp"/> <property name="filters"> <util:map> <entry key="authc" value-ref="formAuthenticationFilter"/> </util:map> </property> <property name="filterChainDefinitions"> <value> /index.jsp = anon /unauthorized.jsp = anon /login.jsp = authc /logout = logout /** = user </value> </property> </bean>
后面所有的处理都是 DelegatingFilterProxy中交给 delegate 去执行的,实际上就是执行一个过滤器链
auth
表单登录
真正调用Realm auth的地方
retryCount判断
密码匹配
登录成功------
AdviceFilter 切面过滤hasRole 等注解
AccessControlFilter
isAccessAllowed 判断是否登录(身份是否有效)
onAccessDenied
shiro拦截器链: http://blog.csdn.net/angel_g/article/details/53993877
权限校验是通过methodInterceptor方式
Eclipse Debug中方法栈,
Filter处理完 ,后面通过MethodInterceptor方式处理@hasRole 等注解检查权限操作
spring mvc中
org.springfreamwork.web.servlet.DispatherServlet 中通过HandleMapping将 controller中 方式上的 requestMapping将 该方法关联起来
HandlerMapping 中 HandlerExecutionChain 中的Handler为 HandlerMethod
每个HandingMapping可以配置 handlerInterceptor
DispatcherServlet中 doService() 中调用doDispatch方法
========================================================================================
shiro-web集成spirng 权限,角色@hasRole 注解校验入口
切面方式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)