1、SpringBoot整合Shiro搭建权限管理组织系统Spring Boot整合Shiro搭建权限管理系统一、 Spring Boot入门1. 新建一个maven工程2. 修改pom.xml文件,添加spring boot父工程 org.springframework.boot spring-boot-starter-parent 1.5.4.RELEASE 3. 修改默认编译的jdk版本 1.84. 添加spring boot启动器(web支持) org.springframework.boot spring-boot-starter-web 完整的pom.xml文件如下: 4.0.0 co
2、m.hellotomcat springboot-shiro 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-parent 1.5.4.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf 1.8 3.0.2.RELEASE 2.0.4 5. 编写controller(UserController)package com.hellotomcat.contr
3、oller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;Controllerpublic class UserController /* * 测试方法 * return */ RequestMapping(/hello) Resp
4、onseBody / 返回json数据 public String hello() System.out.println(hello spring boot); return ok; /* * 测试thymeleaf * param model * return */ RequestMapping(/testThymeleaf) public String testThymeleaf(Model model) / 把数据放入model model.addAttribute(name, admin); / 返回test.html return test; 6. 编写启动类Applicationp
5、ackage com.hellotomcat;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/* * Spring Boot启动类 * author Lenovo * */SpringBootApplicationpublic class Application public static void main(String args) SpringApplication.run(Application.cl
6、ass, args); 7. 运行启动类Application(和运行普通的Java程序一样)8. 然后在浏览器输入:http:/localhost:8080/hello,就可以正常访问了,出现如下画面说明启动成功二、 导入thymeleaf页面模块1. 引入thymeleaf依赖 org.springframework.boot spring-boot-starter-thymeleaf 2. 在controller当中添加如下方法:/* * 测试thymeleaf * param model * return */ RequestMapping(/testThymeleaf) public
7、 String testThymeleaf(Model model) / 把数据放入model model.addAttribute(name, admin); / 返回test.html return test; 3. 在src/main/resources目录下面建立templates目录用来存放页面(Spting-Boot默认页面存放路径,名字不可更改)4. 在templates目录下新建test.html测试thymeleaf的使用!- th:text=$name为thymeleaf语法,获取model中传过来的值5. 在浏览器访问http:/localhost:8080/testTh
8、ymeleaf 进行测试.如果能够在页面上获取到值就说明成功了.此处需要注意在thymeleaf3.0以前对页面标签语法要求比较严格,开始标签必须有对应的结束标签,如果没有就出现如下错误.如果页面标签不严谨还希望使用thymeleaf的话,那就需要升级thymeleaf到3.0以上的版本,此处升级为3.0.26. 升级thymeleaf版本(修复上面的错误),在properties节点下面添加 3.0.2.RELEASE 2.0.4三、 Spring Boot与Shiro整合实现用户认证1. Shiro核心API类Subject: 用户主体(把操作交给SecurityManager)Secur
9、ityManager: 安全管理器(关联Realm)Realm: shiro连接数据库的桥梁2. 导入shiro与spring整合依赖 org.apache.shiro shiro-spring 1.4.0 3. 创建自定义Realmpackage com.hellotomcat.shiro;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.AuthenticationInfo;import org.apache.shiro.authc.AuthenticationToken;
10、import org.apache.shiro.authz.AuthorizationInfo;import org.apache.shiro.realm.AuthorizingRealm;import org.apache.shiro.subject.PrincipalCollection;/* * 自定义Realm * author Lenovo * */public class UserRealm extends AuthorizingRealm /* * 执行授权逻辑 */ Override protected AuthorizationInfo doGetAuthorizationI
11、nfo(PrincipalCollection arg0) System.out.println(执行授权逻辑); return null; /* * 执行认证逻辑 */ Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException System.out.println(执行认证逻辑); return null; 4. 编写shiro的配置类(重点)(最基础的配置类如下)package com.hellotomcat.s
12、hiro;import org.apache.shiro.spring.web.ShiroFilterFactoryBean;import org.apache.shiro.web.mgt.DefaultWebSecurityManager;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/* * S
13、hiro的配置类 * author Lenovo * */Configurationpublic class ShiroConfig /* * 创建ShiroFilterFactoryBean */ public ShiroFilterFactoryBean getShiroFilterFactoryBean(Qualifier(securityManager)DefaultWebSecurityManager securityManager) ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(
14、); / 设置安全管理器 shiroFilterFactoryBean.setSecurityManager(securityManager); return shiroFilterFactoryBean; /* * 创建DefaultWebSecurityManager */ Bean(name=securityManager) public DefaultWebSecurityManager getDefaultWebSecurityManager(Qualifier(userRealm)UserRealm userRealm) DefaultWebSecurityManager secu
15、rityManager = new DefaultWebSecurityManager(); / 关联realm securityManager.setRealm(userRealm); return securityManager; /* * 创建Realm */ Bean public UserRealm getRealm() return new UserRealm(); 5. 使用shiro内置过滤器实现拦截功能1. 2. 3. 4. 5. 5.1. 新建两个页面add.html和update.htmladd.html页面代码:用户新增页面!- 用户新增update.html页面代码:
16、用户更新页面!- 用户更新5.2. 修改test.html页面测试thymeleaf的使用!- 进入用户添加功能:用户添加 进入用户更新功能:用户更新5.3. 在UserController当中添加下面的方法RequestMapping(/add) / 没有ResponseBody这个注释则返回页面,有就返回json数据 public String add() return /user/add; RequestMapping(/update) public String update() return /user/update; 5.4. 修改ShiroConfig类package com.h
17、ellotomcat.shiro;import java.util.LinkedHashMap;import java.util.Map;import org.apache.shiro.spring.web.ShiroFilterFactoryBean;import org.apache.shiro.web.mgt.DefaultWebSecurityManager;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.annotation.Bean;im
18、port org.springframework.context.annotation.Configuration;/* * Shiro的配置类 * author Lenovo * */Configurationpublic class ShiroConfig /* * 创建ShiroFilterFactoryBean */ Bean public ShiroFilterFactoryBean getShiroFilterFactoryBean(Qualifier(securityManager)DefaultWebSecurityManager securityManager) ShiroF
19、ilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); / 设置安全管理器 shiroFilterFactoryBean.setSecurityManager(securityManager); / 添加Shiro内置过滤器 /* * Shiro内置过滤器,可以实现权限相关的拦截 * 常用的过滤器: * anon: 无需认证(登录)可以访问 * authc: 必须认证才可以访问 * user: 如果使用rememberMe的功能可以直接访问 * perms: 该资源必须得到资源权限才可以访问 * role:
20、 该资源必须得到角色权限才可以访问 */ Map filterMap = new LinkedHashMap(); filterMap.put(/add, authc); filterMap.put(/update, authc); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap); return shiroFilterFactoryBean; /* * 创建DefaultWebSecurityManager */ Bean(name=securityManager) public DefaultWebSecurityManager getDefaultWebSecurityManager(Qualifier(userRe
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1