ToB企服应用市场:ToB评测及商务社交产业平台

标题: Springboot+Shiro+Mybatis+mysql实现权限安全认证 [打印本页]

作者: 美丽的神话    时间: 2024-7-5 20:46
标题: Springboot+Shiro+Mybatis+mysql实现权限安全认证
Shiro是Apache 的一个强大且易用的Java安全框架,执行身份验证、授权、暗码学和会话管理。Shiro 主要分为两个部分就是认证和授权两部分
一、介绍

Shiro相关类介绍
二、依赖引入

完整的pom文件如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.                  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.         <modelVersion>4.0.0</modelVersion>
  6.         <parent>
  7.                 <groupId>org.springframework.boot</groupId>
  8.                 <artifactId>spring-boot-starter-parent</artifactId>
  9.                 <version>2.4.1</version>
  10.                 <relativePath></relativePath>
  11.         </parent>
  12.         <groupId>com.gt.shiro</groupId>
  13.         <artifactId>com.sunyue.shiro</artifactId>
  14.         <version>1.0-SNAPSHOT</version>
  15.         <packaging>jar</packaging>
  16.         <properties>
  17.                 <java.version>1.8</java.version>
  18.                 <druid.verzion>1.1.10</druid.verzion>
  19.                 <pagehelper.version>1.2.10</pagehelper.version>
  20.                 <mybatis.version>2.1.4</mybatis.version>
  21.                 <thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.version>
  22.         </properties>
  23.         <dependencies>
  24.                 <dependency>
  25.                         <groupId>org.springframework.boot</groupId>
  26.                         <artifactId>spring-boot-starter-web</artifactId>
  27.                        
  28.                         <exclusions>
  29.                                 <exclusion>
  30.                                         <groupId>org.springframework.boot</groupId>
  31.                                         <artifactId>spring-boot-starter-tomcat</artifactId>
  32.                                 </exclusion>
  33.                         </exclusions>
  34.                 </dependency>
  35.                
  36.                 <dependency>
  37.                         <groupId>org.springframework.boot</groupId>
  38.                         <artifactId>spring-boot-starter-jetty</artifactId>
  39.                 </dependency>
  40.                 <dependency>
  41.                         <groupId>org.mybatis.spring.boot</groupId>
  42.                         <artifactId>mybatis-spring-boot-starter</artifactId>
  43.                         <version>${mybatis.version}</version>
  44.                 </dependency>
  45.                 <dependency>
  46.                         <groupId>org.springframework.boot</groupId>
  47.                         <artifactId>spring-boot-starter-thymeleaf</artifactId>
  48.                 </dependency>
  49.                 <dependency>
  50.                         <groupId>com.github.theborakompanioni</groupId>
  51.                         <artifactId>thymeleaf-extras-shiro</artifactId>
  52.                         <version>2.0.0</version>
  53.                 </dependency>
  54.                
  55.                 <dependency>
  56.                         <groupId>org.apache.shiro</groupId>
  57.                         <artifactId>shiro-spring</artifactId>
  58.                         <version>1.4.0</version>
  59.                 </dependency>
  60.                 <dependency>
  61.                         <groupId>com.alibaba</groupId>
  62.                         <artifactId>druid-spring-boot-starter</artifactId>
  63.                         <version>${druid.verzion}</version>
  64.                 </dependency>
  65.                
  66.                 <dependency>
  67.                         <groupId>com.github.pagehelper</groupId>
  68.                         <artifactId>pagehelper-spring-boot-starter</artifactId>
  69.                         <version>${pagehelper.version}</version>
  70.                 </dependency>
  71.                 <dependency>
  72.                         <groupId>mysql</groupId>
  73.                         <artifactId>mysql-connector-java</artifactId>
  74.                         <scope>runtime</scope>
  75.                 </dependency>
  76.                 <dependency>
  77.                         <groupId>org.projectlombok</groupId>
  78.                         <artifactId>lombok</artifactId>
  79.                         <optional>true</optional>
  80.                 </dependency>
  81.                 <dependency>
  82.                         <groupId>org.springframework.boot</groupId>
  83.                         <artifactId>spring-boot-starter-test</artifactId>
  84.                         <scope>test</scope>
  85.                 </dependency>
  86.         </dependencies>
  87.         <build>
  88.                 <plugins>
  89.                        
  90.                         <plugin>
  91.                                 <groupId>org.springframework.boot</groupId>
  92.                                 <artifactId>spring-boot-maven-plugin</artifactId>
  93.                                 <configuration>
  94.                                         <mainClass>com.gt.shiro.SpringShiroApplication</mainClass>
  95.                                 </configuration>
  96.                         </plugin>
  97.                 </plugins>
  98.         </build>
  99. </project>
复制代码
三、配置文件
  1. application.yml配置文件:
  2. # 开发时关闭缓存,不然没法看到实时页面
  3. spring.thymeleaf.cache=false
  4. # 用非严格的 HTML
  5. spring.thymeleaf.mode=HTML
  6. spring.thymeleaf.encoding=utf-8
  7. spring.thymeleaf.servlet.content-type=text/html
  8. spring.datasource.druid.url=jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
  9. spring.datasource.druid.username=root
  10. spring.datasource.druid.password=admin
  11. spring.datasource.druid.initial-size=1
  12. spring.datasource.druid.min-idle=1
  13. spring.datasource.druid.max-active=20
  14. spring.datasource.druid.test-on-borrow=true
  15. #springbootjdbc导入包不和以前一样
  16. spring.datasource.druid.driver-class-name= com.mysql.cj.jdbc.Driver
  17. mybatis.type-aliases-package=com.gt.shiro.entity
  18. mybatis.mapper-locations=classpath:mapper/*.xml
  19. #打印数据库的操作
  20. logging.level.com.example.springsecurity.dao=debug
  21. #redis缓存
  22. ### 配置Redis
  23. mybatis.configuration.cache-enabled=true
  24. # Redis数据库索引(默认为0)
  25. spring.redis.database=0
  26. # Redis服务器地址
  27. spring.redis.host=...
  28. # Redis服务器连接端口
  29. spring.redis.port=6379
  30. # Redis服务器连接密码(默认为空)
  31. spring.redis.password=sunyue
  32. # 连接池最大连接数(使用负值表示没有限制)
  33. spring.redis.jedis.pool.max-idle=200
  34. # 连接池最大阻塞等待时间(使用负值表示没有限制)
  35. spring.redis.jedis.pool.max-wait=-1
  36. # 连接池中的最小空闲连接
  37. spring.redis.jedis.pool.min-idle=0
  38. # 连接超时时间(毫秒)
  39. spring.redis.timeout=1000
复制代码
Shiro两个紧张的配置类:
四、数据连接和业务逻辑

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.gt.shiro.dao.TestUserMapper">
  4.         <select id="findAll"  resultType="TestUser">
  5.            select * from test_user
  6.         </select>
  7.         <select id="selectOne" resultType="TestUser">
  8.            select * from test_user where id=#{id}
  9.         </select>
  10.         <select id="selectOneByName" resultType="TestUser">
  11.            select * from test_user where username=#{username}
  12.         </select>
  13.         <insert id="insert">
  14.                 insert into test_user (id,username,password,perms,role,salt) value (#{id},#{username},#{password},#{perms},#{role},#{salt})
  15.         </insert>
  16.         <update id="update">
  17.                 update test_user set username = #{username},password=#{password},perms=#{perms},role=#{role},salt=#{salt} where id = #{id}
  18.         </update>
  19.         <delete id="delete">
  20.                 delete from test_user where id = #{id}
  21.         </delete>
  22. </mapper>
复制代码
  1. package com.gt.shiro.server.serverImpl;
  2. import com.gt.shiro.dao.TestUserMapper;
  3. import com.gt.shiro.entity.TestUser;
  4. import org.apache.shiro.crypto.SecureRandomNumberGenerator;
  5. import org.apache.shiro.crypto.hash.SimpleHash;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. import com.sunyue.shiro.server.TestUserServer;
  9. import java.util.List;
  10. @Service
  11. public class TestUserServerImpl implements TestUserServer {
  12.         @Autowired
  13.         private TestUserMapper testUserMapper;
  14.         @Override
  15.         public List<TestUser> selectAll() {
  16.                 return testUserMapper.findAll();
  17.         }
  18.         @Override
  19.         public TestUser selectByOne(Integer id) {
  20.                 return testUserMapper.selectOne(id);
  21.         }
  22.         @Override
  23.         public TestUser selectOneByName(String name) {
  24.                 return testUserMapper.selectOneByName(name);
  25.         }
  26.         @Override
  27.         public void insert(TestUser testUser) {
  28.                 //加密写法
  29.                 String salt = new SecureRandomNumberGenerator().nextBytes().toString();
  30.                 String password= new SimpleHash("md5",testUser.getPassword(),salt,2).toString();
  31.                 testUser.setPassword(password);
  32.                 testUser.setSalt(salt);
  33.                 testUserMapper.insert(testUser);
  34.         }
  35.         @Override
  36.         public void delete(Integer id) {
  37.                 testUserMapper.delete(id);
  38.         }
  39.         @Override
  40.         public void update(TestUser testUser) {
  41.                 testUserMapper.update(testUser);
  42.         }
  43. }
复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4