• springboot+shiro+layuimini实现后台管理系统的权限控制(一)基础环境搭建


    一、框架简介

    springboot自然不必要多说,是现在主流的web框架;

    layuimini是一款基于layui的后台管理系统前端框架,简单易上手,功能也比较齐全,适合后台开发人员使用。

    Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。

    二、环境搭建

    1、新建springboot项目,并在pom中导入相关的依赖:

     ​​​​​

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-thymeleafartifactId>
    4. dependency>
    5. <dependency>
    6. <groupId>junitgroupId>
    7. <artifactId>junitartifactId>
    8. <version>4.9version>
    9. dependency>
    10. <dependency>
    11. <groupId>org.apache.shirogroupId>
    12. <artifactId>shiro-springartifactId>
    13. <version>1.7.1version>
    14. dependency>
    15. <dependency>
    16. <groupId>mysqlgroupId>
    17. <artifactId>mysql-connector-javaartifactId>
    18. <version>5.1.34version>
    19. dependency>
    20. <dependency>
    21. <groupId>com.alibabagroupId>
    22. <artifactId>druid-spring-boot-starterartifactId>
    23. <version>1.1.10version>
    24. dependency>
    25. <dependency>
    26. <groupId>org.mybatis.spring.bootgroupId>
    27. <artifactId>mybatis-spring-boot-starterartifactId>
    28. <version>2.1.0version>
    29. dependency>
    30. <dependency>
    31. <groupId>log4jgroupId>
    32. <artifactId>log4jartifactId>
    33. <version>1.2.17version>
    34. dependency>
    35. <dependency>
    36. <groupId>commons-codecgroupId>
    37. <artifactId>commons-codecartifactId>
    38. <version>1.14version>
    39. dependency>
    40. <dependency>
    41. <groupId>com.google.code.gsongroupId>
    42. <artifactId>gsonartifactId>
    43. dependency>
    44. <dependency>
    45. <groupId>com.github.theborakompanionigroupId>
    46. <artifactId>thymeleaf-extras-shiroartifactId>
    47. <version>2.0.0version>
    48. dependency>

    2、构建Springboot项目框架:

    2、配置application.yml

    1. server:
    2. port: 8080 #端口号
    3. spring:
    4. #数据源设置
    5. datasource:
    6. type: com.alibaba.druid.pool.DruidDataSource
    7. driver-class-name: com.mysql.jdbc.Driver
    8. url: jdbc:mysql://xxxx:3306/test_shiro?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
    9. username: root
    10. password: ****
    11. druid:
    12. initial-size: 10 #初始化连接池大小
    13. min-idle: 10 #最小大小
    14. max-active: 50 #最大大小
    15. max-wait: 60000 #获取连接时最大等待时间,单位毫秒
    16. time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    17. min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
    18. validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql
    19. test-while-idle: true #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
    20. testOnBorrow: false #获取连接时执行检测,建议关闭,影响性能
    21. testOnReturn: false #归还连接时执行检测,建议关闭,影响性能
    22. pool-prepared-statements: false #是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
    23. filters: stat,wall #配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
    24. #thymeleaf设置 prefix:指定模板页面存放路径;suffix:指定模板页面名称的后缀;cache:模板缓存
    25. thymeleaf:
    26. prefix: classpath:/templates/
    27. suffix: .html
    28. cache: false
    29. # mybatis设置 mapper-locations:mapper扫描路径;type-aliases-package:model扫描路径,设置以后,mapper中的resultType可以不用全路径
    30. mybatis:
    31. mapper-locations: classpath:mapper/*.xml
    32. type-aliases-package: com.example.demo.model
    33. logging:
    34. level:
    35. com.example.demo.mapper: trace

    3、导入layuimini;

    下载地址:layui-mini: layuimini,后台admin前端模板,基于 layui 编写的最简洁、易用的后台框架模板。只需提供一个接口就直接初始化整个框架,无需复杂操作。 - Gitee.com

     解压出来的结构是这样的:

    基本上就是普通web前端的项目结构,唯一要说明的一点就是api文件夹,api文件夹下放的是静态的json文件,用来渲染数据用的, 后面我们会用接口来替换掉。

    我们把它引入到我们的项目中,静态资源都放在static下,页面文件都放在templates下:

    4、前后端联通

    在controller包下新建PageController用来绑定页面:

    1. @Controller
    2. public class PageController {
    3. @RequestMapping("/")
    4. public String index() {
    5. return "/index";
    6. }
    7. }

    因为我们引进了thymeleaf作为模板引擎,所以这里return不需要加.html。

    然后我们就可以点击一下运行,看一下效果:

     菜单模块已经加载出来了,但是点击菜单返回的都是提示404。原因在于目前菜单的数据都是通过api文件夹下init.json加载出来的,我们查看这个文件发现,这里的href都是带.html,之前已经说过我们使用的是thymeleaf模板引擎,无法加载后缀名为html的路径,因此如果我们需要将这里的href的后缀都去掉,并且在controller中将href与页面进行绑定:

    1. @Controller
    2. public class PageController {
    3. @RequestMapping("/")
    4. public String index() {
    5. return "/index";
    6. }
    7. @RequestMapping("/page/welcome-1")
    8. public String welcome1() {
    9. return "/page/welcome-1";
    10. }
    11. }

    再次点击运行,我们就能看到主页一被加载出来了:

     好了,至此我们就完成了基础环境的搭建,shiro环境已经被我们引入,并且layuimini也可以作为项目的前端来进行使用了。下一篇,我们就将实现利用shiro实现对登录用户的认证。

  • 相关阅读:
    Leetcode49 字母异位词分组解析
    快速入门Web开发(中)后端开发(有重点)
    Qt+FFmpeg+opengl从零制作视频播放器-7.OpenGL播放视频
    MySQL索引
    【历史上的今天】9 月 18 日:McAfee 创始人出生;ICANN 成立;QQ 宠物正式下线
    vue3 的系统学习(依据菜鸟教程)
    限时分享!字节算法大佬亲撰1200页数据算法笔记:GitHub标星79K
    ShardingSphere基本介绍及核心概念
    SpringBoot整合Mongodb
    hive笔记(七):函数-内置函数/空字段赋值/行转列/列转行/窗口函数/Rank
  • 原文地址:https://blog.csdn.net/superyu1992/article/details/125896270