一、在web.xml中添加shiro过滤器
1. <!-- Shiro filter-->
2. <filter>
3. <filter-name>shiroFilter</filter-name>
4. <filter-class>
5. org.springframework.web.filter.DelegatingFilterProxy
6. </filter-class>
7. </filter>
8. <filter-mapping>
9. <filter-name>shiroFilter</filter-name>
10. <url-pattern>/*</url-pattern>
11. </filter-mapping>
二、在Spring的applicationContext.xml中添加shiro配置
1、添加shiroFilter定义
1. <!-- Shiro Filter -->
2. <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
3. <property name="securityManager" ref="securityManager" />
4. <property name="loginUrl" value="/login" />
5. <property name="successUrl" value="/user/list" />
6. <property name="unauthorizedUrl" value="/login" />
7. <property name="filterChainDefinitions">
8. <value>
9. login = anon
10. /user/** = authc
11. /role/edit/* = perms[role:edit]
12. save = perms[role:edit]
13. list = perms[role:view]
14. /** = authc
15. </value>
16. </property>
17. </bean>
2、添加securityManager定义
1. <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
2. <property name="realm" ref="myRealm" />
3. </bean>
3、添加realm定义
1. <bean id=" myRealm" class="com...MyRealm" />
三、实现MyRealm:继承AuthorizingRealm,并重写认证授权方法
1. public class MyRealm extends
2.
3. private
4. public void
5. this.accountManager = accountManager;
6. }
7.
8. /**
9. * 授权信息
10. */
11. protected
12. PrincipalCollection principals) {
13. String username=(String)principals.fromRealm(getName()).iterator().next();
14. if( username != null
15. User user = accountManager.get( username );
16. if( user != null && user.getRoles() != null
17. new
18. for( SecurityRole each: user.getRoles() ){
19. info.addRole(each.getName());
20. info.addStringPermissions(each.getPermissionsAsString());
21. }
22. return
23. }
24. }
25. return null;
26. }
27.
28. /**
29. * 认证信息
30. */
31. protected
32. throws
33. UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
34. String userName = token.getUsername();
35. if( userName != null && !"".equals(userName) ){
36. User user = accountManager.login(token.getUsername(),
37. String.valueOf(token.getPassword()));
38.
39. if( user != null
40. return new
41. user.getLoginName(),user.getPassword(), getName());
42. }
43. return null;
44. }
45.
46. }