该文只是对Shiro有一定程度了解之后的补充,基础部分需要自己找相关资料了解
securityManager是Shiro配置的核心,一般情况下可以做如下配置,其中只有realm是必须配置的
<!-- 安全管理器 --> <!-- Shiro's main business-tier object for web-enabled applications --> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="shiroDbRealm" /> <property name="sessionManager" ref="sessionManager"/> <property name="cacheManager" ref="shiroEhcacheManager" /> </bean>
1.realm
realm中两个方法 AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken)登陆认证 和 AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals)权限验证 的实现位置,基本上都需要自己实现
个别情况下,比如当使用Shiro-Cas的时候,doGetAuthenticationInfo方法不需要自己实现
2.SessionManager
SessionManager默认是 ServletContainerSessionManager
当使用ServletContainerSessionManager时,验证登陆返回值AuthenticationInfo,中的Principal会被保存到HttpSession中,最后构造的shiro.session接口实现类中一个属性为HttpSession
如果使用DefaultWebSessionManager时,会用到SessionDAO,默认的实现是MemorySessionDAO(在其父类DefaultSessionManager中可以看到),如果使用MemorySessionDAO,Principal信息会被保存到MemorySessionDAO维护的一个 ConcurrentMap<Serializable, Session> sessions 中,如果要自己实现中央缓存,就重写该一个AbstractSessionDAO的子类并实现相关方法。
这里有个可能出现bug的地方,可以通过配置sessionIdCookie属性,解决被服务器重写cookie中会话ID,导致会话丢失的问题(默认是“JSESSIONID”,跟tomcat和jetty一样)
<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> <property name="globalSessionTimeout" value="1800000"/> <property name="deleteInvalidSessions" value="true"/> <property name="sessionValidationSchedulerEnabled" value="true"/> <property name="sessionValidationInterval" value="1800000"/> <property name="sessionIdCookie" ref="sessionIdCookie"/> </bean> <bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie"> <constructor-arg name="name" value="SHRIOSESSIONID"/> </bean>
所以memcached-session-manager做负载均衡 和 DefaultWebSessionManager 是冲突的,可以考虑自己实现一个SessionDAO来完成负载均衡中会话管理功能
3.CacheManager
cacheManager的作用是保存doGetAuthorizationInfo(权限验证)中的返回结果,如果没有配置cacheManager,每一次权限认证都需要重新调用该方法。
4.Filter有很多
灵活的登陆可以采用继承AuthenticationFilter来实现
其中onAccessDenied实现调用登录态验证,或验证通过后跳转页面,返回值可以直接用false,表示不需要框架继续处理了,该方法中全部处理了。
5.自定义SessionId
需要同时启用sessionIdCookie 和 <property name="sessionIdUrlRewritingEnabled" value="false" /> ,sessionIdUrlRewritingEnabled代表不在URL后追加JessionId
相关推荐
最后,"跟我学Shiro教程.zip"可能是整个教程的综合资源包,包含更多补充材料、练习题或者项目案例,旨在帮助学习者巩固理论知识,并提升实际操作技能。 在学习Shiro时,你需要理解以下关键知识点: 1. **身份验证...
Shiro提供了自己的会话管理机制,可以替代或补充应用服务器的会话管理。在Shiro_Demo中,我们可以配置Shiro如何存储和管理会话,例如使用内存、数据库或分布式存储。同时,Shiro还提供了会话监听器和超时控制等功能...
ssm+shiro框架整合项目,注释清楚,可供新手学习,完整示例的sql语句,需要项目的请链接:http://download.csdn.net/download/u014246725/9944156
包含 apache shiro-core v1.4.0 的 java源码、jar包、以及 javadoc。从源码库中整理而来。手动补充了源库 shiro-core-1.4.0-sources.jar 中缺少的 aop、cache、io、event、config、cryptor 等源代码,便于统一查看
在Spring项目中,Shiro可以作为Spring Security的一个补充,处理简单的认证和授权需求。 四、实战演练 在"spring-shiro.rar"压缩包中,开发者可以找到一个完整的示例项目,包括Spring配置文件、Shiro配置、自定义...
Shiro的易用性和灵活性使其成为Spring Boot的绝佳补充,尤其适合快速开发中对权限控制的需求。 要将Spring Boot与Shiro整合,我们首先需要在项目中引入Shiro的依赖。在`pom.xml`文件中,添加如下Maven依赖: ```...
Seja o que为您准备了Shiro pode补充性seu servidor通讯器,共有150台comandos dos mais diversos tipos! Uma equipe pronta para lhe ajudar! Nãotenha medo de pedir ajuda,sugerir novasfunçõesou deixar...
01.权限管理概述.avi 02.shiro认识.avi 03.使用ini完成认证.avi 04.shiro登录登出流程分析.avi 05.自定义realm登录登出.avi ...23.spring集成-静态注解授权_补充.avi 24.spring集成-权限-角色-用户关系分析.a
在本项目中,Shiro可能被用作SpringBoot的补充,处理用户登录、权限控制等安全问题。Shiro提供了一套易于使用的API,可以方便地进行权限检查、角色分配以及会话管理,非常适合在微服务架构中快速实现权限控制。 **4...
springboot完美整合shiro、ehcache、redis、spring data jpa,swagger、fastjson,后续继续补充,适合初中级开发练习掌握框架,代码下载可直接运行,测试已通过
在SpringBoot中,Shiro可以作为安全管理的补充,提供权限控制和用户认证。Shiro的简单API使得开发者能轻松地实现如登录验证、角色权限分配等功能。 3. **MyBatis**: MyBatis是一个优秀的持久层框架,它支持定制化...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
本项目是基于开发的,补充功能: shiro并发登陆人数控制(超过登录用户最大配置数量,清理用户)功能;解决在父子页面中,判断用户未登录之后,重定向到登录页面替换显示问题;解决ajax请求,判断用户未登录之后,...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
首先,JFinal-Ext是对原生JFinal框架的重要补充,它提供了一系列实用的工具类和插件,包括但不限于: 1. **ORM优化**:JFinal-Ext增强了JFinal的ORM能力,如支持多对多关系、级联保存和删除,以及更灵活的查询条件...
- `SupplementaryCharacterData.java`:可能包含关于Unicode补充字符的数据,用于处理高代理对和低代理对。 - `ComposedCharIter.java`:可能用于迭代和处理组合字符序列,如连字符和附加符号。 - `...
补充了sql文件。JEEWEB Mybatis版本是一款基于SpringMVC+Spring+Mybatis+Mybatis Plus的JAVA WEB敏捷开发系统;它是一款具有代码生成功能的智能快速开发平台;是以Spring Framework为核心容器,Spring MVC为模型视图...
补充了sql文件。JEEWEB Mybatis版本是一款基于SpringMVC+Spring+Mybatis+Mybatis Plus的JAVA WEB敏捷开发系统;它是一款具有代码生成功能的智能快速开发平台;是以Spring Framework为核心容器,Spring MVC为模型视图...
该项目不维护,推荐OAuth2实现sso: 目前该项目所有代码资源搭建测试来源于互联网。 sso服务端需要的模块如下cas 4.1.x版本[为什么不用4.2.x,看了一下使用gradle,我eclipse只是安装了maven,不想折腾gradle,毕竟...