Shiro教程(五)Shiro整体的配置文件

本文详细介绍了Shiro权限管理系统在项目中的具体配置方法,包括会话管理、记住我功能、缓存管理和自定义过滤器等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


因为 Shrio  和整体项目结合的话,细节问题还是比较多。我要侧重讲一些地方。下面我先把我整个项目的 Shiro  配置文件先贴出来,如果你需要哪个类的实现方式,你可以针对性的查找,或者问我。


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
  10. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
  11. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  12. <description>== Shiro Components ==</description>
  13. <!-- 会话ID生成器 -->
  14. <bean id="sessionIdGenerator" class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator"/>
  15. <!-- 会话Cookie模板 -->
  16. <bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
  17. <!--cookie的name,我故意取名叫xxxxbaidu -->
  18. <constructor-arg value="v_v-s-baidu"/>
  19. <property name="httpOnly" value="true"/>
  20. <!--cookie的有效时间 -->
  21. <property name="maxAge" value="-1"/>
  22. <!-- 配置存储Session Cookie的domain为 一级域名 -->
  23. <property name="domain" value=".itboy.net"/>
  24. </bean>
  25. <!-- custom shiro session listener -->
  26. <bean id="customSessionListener" class="com.sojson.core.shiro.listenter.CustomSessionListener">
  27. <property name="shiroSessionRepository" ref="jedisShiroSessionRepository"/>
  28. </bean>
  29. <!-- 用户信息记住我功能的相关配置 -->
  30. <bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
  31. <constructor-arg value="v_v-re-baidu"/>
  32. <property name="httpOnly" value="true"/>
  33. <!-- 配置存储rememberMe Cookie的domain为 一级域名 -->
  34. <property name="domain" value=".itboy.net"/>
  35. <property name="maxAge" value="2592000"/><!-- 30天时间,记住我30天 -->
  36. </bean>
  37. <!-- rememberMe管理器 -->
  38. <bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
  39. <!-- rememberMe cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位)-->
  40. <property name="cipherKey"
  41. value="#{T(org.apache.shiro.codec.Base64).decode('4AvVhmFLUs0KTA3Kprsdag==')}"/>
  42. <property name="cookie" ref="rememberMeCookie"/>
  43. </bean>
  44. <!-- custom shiro session listener -->
  45. <bean id="customShiroSessionDAO" class="com.sojson.core.shiro.CustomShiroSessionDAO">
  46. <property name="shiroSessionRepository" ref="jedisShiroSessionRepository"/>
  47. <property name="sessionIdGenerator" ref="sessionIdGenerator"/>
  48. </bean>
  49. <!-- 会话验证调度器 -->
  50. <bean id="sessionValidationScheduler" class="org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler">
  51. <property name="interval" value="${session.validate.timespan}"/>
  52. <property name="sessionManager" ref="sessionManager"/>
  53. </bean>
  54. <!-- 安全管理器 -->
  55. <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
  56. <property name="realm" ref="sampleRealm"/>
  57. <property name="sessionManager" ref="sessionManager"/>
  58. <property name="rememberMeManager" ref="rememberMeManager"/>
  59. <property name="cacheManager" ref="customShiroCacheManager"/>
  60. </bean>
  61. <!-- 用户缓存 -->
  62. <bean id="customShiroCacheManager" class="com.sojson.core.shiro.cache.impl.CustomShiroCacheManager">
  63. <property name="shiroCacheManager" ref="jedisShiroCacheManager"/>
  64. </bean>
  65. <!-- shiro 缓存实现,对ShiroCacheManager,我是采用redis的实现 -->
  66. <bean id="jedisShiroCacheManager" class="com.sojson.core.shiro.cache.impl.JedisShiroCacheManager">
  67. <property name="jedisManager" ref="jedisManager"/>
  68. </bean>
  69. <!-- redis 的缓存 -->
  70. <bean id="jedisManager" class="com.sojson.core.shiro.cache.JedisManager">
  71. <property name="jedisPool" ref="jedisPool"/>
  72. </bean>
  73. <!-- 相当于调用SecurityUtils.setSecurityManager(securityManager) -->
  74. <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
  75. <property name="staticMethod" value="org.apache.shiro.SecurityUtils.setSecurityManager"/>
  76. <property name="arguments" ref="securityManager"/>
  77. </bean>
  78. <!-- 授权 认证 -->
  79. <bean id="sampleRealm" class="com.sojson.core.shiro.token.SampleRealm" ></bean>
  80. <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
  81. <property name="sessionValidationInterval" value="1800000"/> <!-- 相隔多久检查一次session的有效性 -->
  82. <property name="globalSessionTimeout" value="1800000"/> <!-- session 有效时间为半小时 (毫秒单位)-->
  83. <property name="sessionDAO" ref="customShiroSessionDAO"/>
  84. <property name="sessionListeners">
  85. <list>
  86. <ref bean="customSessionListener"/>
  87. </list>
  88. </property>
  89. <property name="sessionValidationScheduler" ref="sessionValidationScheduler"/>
  90. <property name="sessionValidationSchedulerEnabled" value="true"/>
  91. <property name="deleteInvalidSessions" value="true"/>
  92. <property name="sessionIdCookie" ref="sessionIdCookie"/>
  93. </bean>
  94. <bean id="jedisShiroSessionRepository" class="com.sojson.core.shiro.cache.JedisShiroSessionRepository" >
  95. <property name="jedisManager" ref="jedisManager"/>
  96. </bean>
  97. <!--
  98. 自定义角色过滤器 支持多个角色可以访问同一个资源 eg:/home.jsp = authc,roleOR[admin,user]
  99. 用户有admin或者user角色 就可以访问
  100. -->
  101. <!-- 认证数据库存储-->
  102. <bean id="shiroManager" class="com.sojson.core.shiro.service.impl.ShiroManagerImpl"/>
  103. <bean id="login" class="com.sojson.core.shiro.filter.LoginFilter"/>
  104. <bean id="role" class="com.sojson.core.shiro.filter.RoleFilter"/>
  105. <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
  106. <property name="securityManager" ref="securityManager" />
  107. <property name="loginUrl" value="/u/login.shtml" />
  108. <!-- TODO 待提取 -->
  109. <property name="successUrl" value="/" />
  110. <property name="unauthorizedUrl" value="/?login" />
  111. <!-- 初始配置,现采用自定义 -->
  112. <!-- <property name="filterChainDefinitions" >-->
  113. <!-- <value>-->
  114. <!-- /** = anon-->
  115. <!-- /page/login.jsp = anon-->
  116. <!-- /page/register/* = anon-->
  117. <!-- /page/index.jsp = authc-->
  118. <!-- /page/addItem* = authc,roles[数据管理员]-->
  119. <!-- /page/file* = authc,roleOR[普通用户,数据管理员]-->
  120. <!-- /page/listItems* = authc,roleOR[数据管理员,普通用户]-->
  121. <!-- /page/showItem* = authc,roleOR[数据管理员,普通用户]-->
  122. <!-- /page/updateItem*=authc,roles[数据管理员]-->
  123. <!-- </value>-->
  124. <!-- </property>-->
  125. <!-- 读取初始自定义权限内容-->
  126. <property name="filterChainDefinitions" value="#{shiroManager.loadFilterChainDefinitions()}"/>
  127. <property name="filters">
  128. <util:map>
  129. <entry key="login" value-ref="login"></entry>
  130. <entry key="role" value-ref="role"></entry>
  131. </util:map>
  132. </property>
  133. </bean>
  134. <!-- Shiro生命周期处理器-->
  135. <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
  136. <!-- ============================================================================ -->
  137. </beans>


原文地址:https://www.sojson.com/blog/136.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值