这是一个shiro的入门Demo.. 使用了Spring MVC,mybaits等技术.. 数据库设计 : User : name--password Role : id--userid--roleName Function : id--userid--url tinys普通用户只能访问index.jsp admin用户通过添加了admin的permission,所以可以访问admin.jsp role用户通过添加了role角色,所以可以访问role.jsp 这是最基本的shiro的运用..目的是让你快速了解shiro的机制.. 这个Demo体现shiro的地方主要在两个类以及shiro.xml的配置文件 CustomRealm : 处理了登录验证以及授权.. ShiroAction : 用来传递登录时的用户数据..转换为token传递给realm...之后根据结果做相应的逻辑处理.. shiro.xml : shiro的主要配置... 规则定义在以下地方 : <!-- 过滤链定义 --> <property name="filterChainDefinitions"> <value> /login.jsp* = anon /index.jsp* = authc /index.do* = authc /admin.jsp*=authc,perms[/admin] /role.jsp*=authc,roles[role] </value> </property> ------------------------------------------------------------------------------------------------------------------------------------------------------------- 2015-10-28更新 --通过添加了以下内容来使用注解方式配置权限.... <!-- Support Shiro Annotation 必须放在springMVC配置文件中 --> <!-- 异常处理,权限注解会抛出异常,根据异常返回相应页面 --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="org.apache.shiro.authz.UnauthorizedException">unauth</prop> <prop key="org.apache.shiro.authz.UnauthenticatedException">login</prop> </props> </property> </bean> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor" /> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager" /> </bean> <!-- end --> --修改了过滤链 <!-- 过滤链定义 --> //简单的讲就是把需要特别处理的路径写到前面,越特殊写到越前 <property name="filterChainDefinitions"> <value> <!-- 注意这里需要把前缀写全.../shiro这里 --> /shiro/login.do*=anon /login.jsp* = anon /admin.jsp*=authc,perms[/admin] /role.jsp*=authc,roles[role] /** = authc </value> </property> --------------------------------------------------------------------------------------------------------------------------------------------------- 15-10-29 添加了使用ehcache的缓存机制 <!-- securityManager --> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="myRealm" /> <property name="cacheManager" ref="shiroEhcacheManager" /> </bean> <!-- 用户授权信息Cache, 采用EhCache,需要的话就配置上此信息 --> <bean id="shiroEhcacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"> <property name="cacheManagerConfigFile" value="classpath:ehcache-shiro.xml" /> </bean> 添加了redis缓存... <!-- 缓存相关配置 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!begin --> <!-- securityManager --> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="myRealm" /> <!-- 配置ehcache缓存,如果是本机,没分布式的话,可以考虑就选择ehcache缓存 --> <property name="cacheManager" ref="shiroEhcacheManager" /> <!-- 如果有多台机子的话,可以考虑部署redis分布式缓存.. --> <property name="sessionManager" ref="sessionManager" /> </bean> <!-- 用户授权信息Cache, 采用EhCache,需要的话就配置上此信息 --> <bean id="shiroEhcacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"> <property name="cacheManagerConfigFile" value="classpath:ehcache-shiro.xml" /> </bean> <!--保持 Session 到 Redis--> <bean id="redisManager" class="hxk.util.redis.RedisManager"/> <!-- 配置redis的DAO --> <bean id="redisSessionDAO" class="hxk.util.redis.RedisSessionDAO"> <property name="redisManager" ref="redisManager"/> <property name="timeToLiveSeconds" value="180"/> </bean> <!-- 配置shiro提供的session管理者.. --> <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> <property name="sessionDAO" ref="redisSessionDAO" /> <!-- sessionIdCookie的实现,用于重写覆盖容器默认的JSESSIONID --> <property name="sessionIdCookie" ref="sharesession" /> </bean> <!-- 这里很重要,配置每次读取的cookie的名字..不会因为cookie的问题而读取到不同(错误的)jessessionid.. 目的就是让用户整个访问过程中,项目读取到用户浏览器的同一个cookie..就会有一样的jessessionid.. --> <!-- sessionIdCookie的实现,用于重写覆盖容器默认的JSESSIONID --> <bean id="sharesession" class="org.apache.shiro.web.servlet.SimpleCookie"> <!-- cookie的name,对应的默认是 JSESSIONID --> <constructor-arg name="name" value="SHAREJSESSIONID" /> <!-- jsessionId的path为 / 用于多个系统共享jsessionId --> <property name="path" value="/" /> <property name="httpOnly" value="true"/> </bean> <!-- 缓存相关配置 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!end -->

































































































































- 1
- 2

- IM飞大2015-12-25使用redis做分布式,学习了,但是有一个问题,就是用的ehcache做的缓存没分布式,会有问题啊distinys2015-12-28encache是给自己用的..本机缓存..

- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于互联网金融的农村普惠金融的发展策略.docx
- 电子商务物流大数据应用问题研究.docx
- 计算机控制系统的软件抗干扰技术.docx
- 中信银行FTP(资金转移定价)基础知识内部培训资料.ppt
- linux服务器网卡驱动安装及故障排除.doc
- CTCP协议的简单即时通信软件的设计方案与实现.doc
- 计算机三级网络技术题库.doc
- Mooc背景下大学计算机基础课程的优化策略.docx
- 计量自动化系统在抄表中运用分析.docx
- 信息网络化对政府行政管理的挑战及对策.docx
- 电子商务概论-电大形考作业.doc
- 常用统计分析软件SPSS讲义.ppt
- 移动通信精品课程网站建设研究.doc
- 信息化条件下的施工企业财务管理问题探究.doc
- 浅析智慧城市顶层设计的思路及其误区.docx
- MATLAB数字滤波器设计方案与仿真.doc


