SpringBoot整合Shiro搭建权限管理组织系统.docx
- 文档编号:12506022
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:45
- 大小:804.71KB
SpringBoot整合Shiro搭建权限管理组织系统.docx
《SpringBoot整合Shiro搭建权限管理组织系统.docx》由会员分享,可在线阅读,更多相关《SpringBoot整合Shiro搭建权限管理组织系统.docx(45页珍藏版)》请在冰豆网上搜索。
SpringBoot整合Shiro搭建权限管理组织系统
SpringBoot整合Shiro搭建权限管理系统
一、SpringBoot入门
1.新建一个maven工程
2.修改pom.xml文件,添加springboot父工程
--继承springboot的默认父工程-->
--SpringBoot父工程-->
3.修改默认编译的jdk版本
--修改默认编译jdk版本-->
4.添加springboot启动器(web支持)
--web支持-->
完整的pom.xml文件如下:
//maven.apache.org/POM/4.0.0" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation="http: //maven.apache.org/POM/4.0.0http: //maven.apache.org/xsd/maven-4.0.0.xsd"> --继承springboot的默认父工程--> --SpringBoot父工程--> --web支持--> --thymeleaf--> --修改参数--> --修改默认编译jdk版本--> --修改thymeleaf的版本--> 5.编写controller(UserController) packagecom.hellotomcat.controller; importorg.springframework.stereotype.Controller; importorg.springframework.ui.Model; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.ResponseBody; @Controller publicclassUserController{ /*** *测试方法 *@return */ @RequestMapping("/hello") @ResponseBody//返回json数据 publicStringhello(){ System.out.println("hellospringboot"); return"ok"; } /*** *测试thymeleaf *@parammodel *@return */ @RequestMapping("/testThymeleaf") publicStringtestThymeleaf(Modelmodel){ //把数据放入model model.addAttribute("name","admin"); //返回test.html return"test"; } } 6.编写启动类Application packagecom.hellotomcat; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; /*** *SpringBoot启动类 *@authorLenovo * */ @SpringBootApplication publicclassApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(Application.class,args); } } 7.运行启动类Application(和运行普通的Java程序一样) 8.然后在浏览器输入: http: //localhost: 8080/hello,就可以正常访问了,出现如下画面说明启动成功 二、导入thymeleaf页面模块 1.引入thymeleaf依赖 --thymeleaf--> 2.在controller当中添加如下方法: /*** *测试thymeleaf *@parammodel *@return */ @RequestMapping("/testThymeleaf") publicStringtestThymeleaf(Modelmodel){ //把数据放入model model.addAttribute("name","admin"); //返回test.html return"test"; } 3.在src/main/resources目录下面建立templates目录用来存放页面(Spting-Boot默认页面存放路径,名字不可更改) 4.在templates目录下新建test.html DOCTYPEhtml>
--
text="${name}"> th: text="${name}"为thymeleaf语法,获取model中传过来的值 5.在浏览器访问http: //localhost: 8080/testThymeleaf进行测试.如果能够在页面上获取到值就说明成功了. 此处需要注意在thymeleaf3.0以前对页面标签语法要求比较严格,开始标签必须有对应的结束标签,如果没有就出现如下错误. 如果页面标签不严谨还希望使用thymeleaf的话,那就需要升级thymeleaf到3.0以上的版本,此处升级为3.0.2 6.升级thymeleaf版本(修复上面的错误),在properties节点下面添加 --修改thymeleaf的版本--> 三、SpringBoot与Shiro整合实现用户认证 1.Shiro核心API类 Subject: 用户主体(把操作交给SecurityManager) SecurityManager: 安全管理器(关联Realm) Realm: shiro连接数据库的桥梁 2.导入shiro与spring整合依赖 --shiro与Spring整合依赖--> 3.创建自定义Realm packagecom.hellotomcat.shiro; importorg.apache.shiro.authc.AuthenticationException; importorg.apache.shiro.authc.AuthenticationInfo; importorg.apache.shiro.authc.AuthenticationToken; importorg.apache.shiro.authz.AuthorizationInfo; importorg.apache.shiro.realm.AuthorizingRealm; importorg.apache.shiro.subject.PrincipalCollection; /*** *自定义Realm *@authorLenovo * */ publicclassUserRealmextendsAuthorizingRealm{ /*** *执行授权逻辑 */ @Override protectedAuthorizationInfodoGetAuthorizationInfo(PrincipalCollectionarg0){ System.out.println("执行授权逻辑"); returnnull; } /*** *执行认证逻辑 */ @Override protectedAuthenticationInfodoGetAuthenticationInfo(AuthenticationTokenarg0)throwsAuthenticationException{ System.out.println("执行认证逻辑"); returnnull; } } 4.编写shiro的配置类(重点)(最基础的配置类如下) packagecom.hellotomcat.shiro; importorg.apache.shiro.spring.web.ShiroFilterFactoryBean; importorg.apache.shiro.web.mgt.DefaultWebSecurityManager; importorg.springframework.beans.factory.annotation.Qualifier; importorg.springframework.context.annotation.Bean; importorg.springframework.context.annotation.Configuration; /*** *Shiro的配置类 *@authorLenovo * */ @Configuration publicclassShiroConfig{ /*** *创建ShiroFilterFactoryBean */ publicShiroFilterFactoryBeangetShiroFilterFactoryBean(@Qualifier("securityManager")DefaultWebSecurityManagersecurityManager){ ShiroFilterFactoryBeanshiroFilterFactoryBean=newShiroFilterFactoryBean(); //设置安全管理器 shiroFilterFactoryBean.setSecurityManager(securityManager); returnshiroFilterFactoryBean; } /*** *创建DefaultWebSecurityManager */ @Bean(name="securityManager") publicDefaultWebSecurityManagergetDefaultWebSecurityManager(@Qualifier("userRealm")UserRealmuserRealm){ DefaultWebSecurityManagersecurityManager=newDefaultWebSecurityManager(); //关联realm securityManager.setRealm(userRealm); returnsecurityManager; } /*** *创建Realm */ @Bean publicUserRealmgetRealm(){ returnnewUserRealm(); } } 5.使用shiro内置过滤器实现拦截功能 1. 2. 3. 4. 5. 5.1.新建两个页面add.html和update.html add.html页面代码: DOCTYPEhtml>
--
用户新增
update.html页面代码:
DOCTYPEhtml>
--
用户更新
5.2.修改test.html页面
DOCTYPEhtml>
--
text="${name}"> 进入用户添加功能: 进入用户更新功能: 5.3.在UserController当中添加下面的方法 @RequestMapping("/add") //没有@ResponseBody这个注释则返回页面,有就返回json数据 publicStringadd(){ return"/user/add"; } @RequestMapping("/update") publicStringupdate(){ return"/user/update"; } 5.4.修改ShiroConfig类 packagecom.hellotomcat.shiro; importjava.util.LinkedHashMap; importjava.util.Map; importorg.apache.shiro.spring.web.ShiroFilterFactoryBean; importorg.apache.shiro.web.mgt.DefaultWebSecurityManager; importorg.springframework.beans.factory.annotation.Qualifier; importorg.springframework.context.annotation.Bean; importorg.springframework.context.annotation.Configuration; /*** *Shiro的配置类 *@authorLenovo * */ @Configuration publicclassShiroConfig{ /*** *创建ShiroFilterFactoryBean */ @Bean publicShiroFilterFactoryBeangetShiroFilterFactoryBean(@Qualifier("securityManager")DefaultWebSecurityManagersecurityManager){ ShiroFilterFactoryBeanshiroFilterFactoryBean=newShiroFilterFactoryBean(); //设置安全管理器 shiroFilterFactoryBean.setSecurityManager(securityManager); //添加Shiro内置过滤器 /*** *Shiro内置过滤器,可以实现权限相关的拦截 *常用的过滤器: *anon: 无需认证(登录)可以访问 *authc: 必须认证才可以访问 *user: 如果使用rememberMe的功能可以直接访问 *perms: 该资源必须得到资源权限才可以访问 *role: 该资源必须得到角色权限才可以访问 */ Map filterMap.put("/add","authc"); filterMap.put("/update","authc"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap); returnshiroFilterFactoryBean; } /*** *创建DefaultWebSecurityManager */ @Bean(name="securityManager") publicDefaultWebSecurityManagergetDefaultWebSecurityManager(@Qualifier("userRe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SpringBoot 整合 Shiro 搭建 权限 管理 组织 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)