有具体问题的可以参考之前的关于shiro的博文,关于shiro的博文均是一次工程的内容
注解:

新建一个类:
此时需要有admin的权限才可以执行下面的代码
public class ShiroService { @RequiresRoles({"admin"}) public void testMethod(){ System.out.println("test。。。。。"); } }
把新建的类注入到spring容器中
<bean class="com.MrChengs.shiro.service.ShiroService"></bean>
ShiroHandler .java中加入
@Controller @RequestMapping("/shiro") public class ShiroHandler { @Autowired private ShiroService shiroService; @RequestMapping("/testMethod") public String testMethod(){ shiroService.testMethod(); return "redirect:/list.jsp"; } .... }
list.jsp中加入测试超链接
<a href="shiro/testMethod">Test Method</a>
此时我们登陆admin可以成功测试
当我们登陆user再点击测试的时候
UnauthorizedException
初始化资源和权限
点击看源码可知

其配置的文件的内容最终被封装成一个map

新建一个初始化文件的类:
在map的方法体里面可以写我们需要在数据库中查询等代码
LinkedHashMap一定是这个
package com.MrChengs.shiro.Factory; import java.util.LinkedHashMap; public class FilterChainDefinitionMapperBUilder { public LinkedHashMap<String, String> builderFilterChainDefinitionMap(){ LinkedHashMap<String, String> map = new LinkedHashMap<String, String>(); map.put("/login.jsp", "anon"); map.put("/shiro/login", "anon"); map.put("/shiro/logout", "logout"); map.put("/user.jsp", "roles[user]"); map.put("/admin.jsp", "roles[admin]"); map.put("/**", "authc"); return map; } }
在application中:
把注释的地方替换成红色标准的地方
<!--
<property name="filterChainDefinitions">
<value>
/login.jsp = anon
/shiro/login = anon
/shiro/logout = logout
/user.jsp = roles[user]
/admin.jsp = roles[admin]
# everything else requires authentication:
/** = authc
</value>
</property>
-->
<property name="filterChainDefinitionMap" ref="filterIniDef"></property>
<!-- 配置一个bean,实际上是一个map,实例通过工厂模式的方法 -->
<bean id="filterIniDef" factory-bean="filterChainDefinitionMapperBUilder"
factory-method="builderFilterChainDefinitionMap"></bean>
<bean id="filterChainDefinitionMapperBUilder" class="com.MrChengs.shiro.Factory.FilterChainDefinitionMapperBUilder"></bean>
其余不变测试时没有任何问题的!!!
会话管理



测试如下
