使用shiro实现用户拦截和登录验证之后,整合mybatis数据库

1、导入依赖

<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.5</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--shiro整合spring的包--><!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-spring --><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.7.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring5 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency><dependency><groupId>org.thymeleaf.extras</groupId><artifactId>thymeleaf-extras-java8time</artifactId></dependency></dependencies>

2、Druid数据源专有配置

application.yml

spring:datasource:username: rootpassword: rootpassurl: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=UTF-8driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource#SpringBoot默认是不注入这些的,需要自己绑定#druid数据源专有配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入#如果允许报错,java.lang.ClassNotFoundException: org.apache.Log4j.Properity#则导入log4j 依赖就行filters: stat,wall,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

3、连接数据库


4、数据库配置

4.1 pom.xml中加入mybtis-springboot依赖

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency>

4.2 application.properties

mybatis.type-aliases-package=com.kuang.pojo
mybatis.mapper-locations=classpath:mapper/*.xml

5、添加pojo类

导入lombok依赖

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.18</version><scope>provided</scope></dependency>

新建pojo包,以及User实体类

package com.kuang.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private int id;private String name;private String pwd;
}

6、添加mapper映射

package com.kuang.mapper;import com.kuang.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;@Repository
@Mapper
public interface UserMapper {public User queryUserById();
}

7、添加mapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.orgl/DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.mapper.UserMapper"><select id="queryUserByName" parameterType="String" resultType="User" >select * from mybatis.user where name=#{name}</select></mapper>

8、编写service层

package com.kuang.service;import com.kuang.pojo.User;public interface UserService {public User queryUserByName(String name);
}
package com.kuang.service;import com.kuang.mapper.UserMapper;
import com.kuang.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl implements UserService{@AutowiredUserMapper userMapper;@Overridepublic User queryUserByName(String name) {return userMapper.queryUserByName(name);}
}

9、测试从数据库中获取数据是否成功

package com.kuang;import com.kuang.service.UserServiceImpl;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class ShiroSpringbootApplicationTests {@AutowiredUserServiceImpl userServiceImpl;@Testvoid contextLoads() {System.out.println(userServiceImpl.queryUserByName("狂神"));}
}

10、结果


说明到这里环境已搭建完成并无误

11、修改自定义的Realm,连接真实的数据库

package com.kuang.config;import com.kuang.pojo.User;
import com.kuang.service.UserService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;//自定义的userRealm
public class UserRealm extends AuthorizingRealm {@AutowiredUserService userService;//授权@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {System.out.println("执行了==>授权doGetAuthorizationInfo");return null;}//认证@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {   System.out.println("执行了==>认证doGetAuthenticationInfo");//用户名,密码~ 数据库中取UsernamePasswordToken userToken = (UsernamePasswordToken) token;//连接真实的数据库User user = userService.queryUserByName(userToken.getUsername());if(user==null){return null;}return new SimpleAuthenticationInfo("",user.getPwd(),"");}
}

到此,就可以使用shiro验证用户和登录拦截了。

shiro整合mybatis数据库相关推荐

  1. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...

  2. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 1.前言 本文主要介绍使用SpringBoot与shiro实现基 ...

  3. springboot整合mysql5.7_springboot整合mybatis访问mysql,数据库

    讲解如何在springboot下整合mybatis,并访问数据库. 引入依赖 在pom文件引入mybatis-spring-boot-starter的依赖: org.mybatis.spring.bo ...

  4. springboot update数据_SpringBoot整合Mybatis+Druid+数据库(注解版)

    运行展示 正题 Spring boot :2.1.5RELEASE :数据库(Mysql.Oracle):Mybatis:阿里云的连接池 : Druid : 步骤 1.POM依赖 <!-- My ...

  5. SpringBoot 整合mybatis、mybatis日志、并测试findAll查询数据库方法

    一.创建SpringBoot项目 随便创建一个SpringBoot项目,能启动就行 建议看我的上一个文章 SpringBoot框架快速入门搭建Hello World 二.添加mybatis依赖并配置 ...

  6. 【SpringBoot整合Mybatis】数据库某字段值为空时,接口未返回该字段 解决办法

    [SpringBoot整合Mybatis]数据库字段为空时,接口不返回该字段 解决办法 问题描述: 排查问题: 解决问题: 测试: 参考资料: 今天整合项目的时候,发现了SpringBoot整合Myb ...

  7. 《SpringBoot与Shiro整合-权限管理实战---从构建到模拟数据库登入》

    <SpringBoot与Shiro整合-权限管理实战> ---- 从构建到模拟数据库登入 ---- 点击下载源码 ---- 或者查看? 文章目录 <SpringBoot与Shiro整 ...

  8. shiro整合springboot,配置mybatis和增加邮箱验证码登录

    目录 config配置 controller层 Mapper(Mybatis配置) pojo Service 工具类 MailUtil 前台页面 配置(application) 相关依赖 config ...

  9. 【超详细】SpringBoot与Shiro整合-权限管理实战实操(附源码地址)

    一.搭建SpringBoot开发环境 1. 安装好开发软件和Maven等 开发工具:Spring Tool Suite(TST) Maven :3.3.9 jdk:1.8 2. 创建springboo ...

最新文章

  1. Confluence 6 计划任务
  2. 程序计算机限制无法打开,由于一个软件限制策略的阻止,windows无法打开此程序...解决方案参考...
  3. navicat 连接 mogodb 报错 requires authentication
  4. vscode 显示多个文件_优秀的 VS Code 前端开发扩展
  5. python打包工具报错_python打包生成exe报错
  6. 样式中文字和图片对齐问题
  7. JDK1.8的接口新特性
  8. 自己的父母,能把钱交给他们存吗?
  9. nginx服务器设置url的优雅链接
  10. 云服务器机型系统选择,云服务器机型选择操作系统
  11. 知乎热榜的话题,为什么从阿里巴巴离职,大萌哥汇总了9大理由,看完我先柠檬酸了!
  12. 如何给图片加水印?分享怎么给图片加水印的方法
  13. 笔记连载 | Day15【按键检测、按键消抖】 【原理及verilog仿真】篇
  14. 网页上打印PDF文件
  15. Endnote无法正确识别引文
  16. python语言下同一个类下有多个函数,其中一个函数想调用另外一个函数里面的变量怎么调用
  17. 输入地址查询并获取地址的经纬度-百度地图-JS
  18. 一个80后SEOER对于SEO职业规划的三点想法
  19. 热水器进水阀与角阀连接处漏水
  20. Github开源项目下载加速

热门文章

  1. [8086汇编]利用栈翻转内存数据
  2. AngularJS入门心得2——何为双向数据绑定
  3. Liaoning Province--保三成功
  4. java中的Iterator和Iterable 区别
  5. pytorch 图像分割的交并比_Segmentation101系列-最简单的卷积网络语义分割(1)-PASCAL VOC图像分割...
  6. java vector 线程安全_关于Vector到底是不是 线程安全的 问题
  7. java main 命令行_java Main 命令行
  8. html导航栏点击不能跳转,无法单击导航栏中的链接CSS HTML
  9. MySQL小黑框怎么打开_打开你的小黑框命令行,来跟我一起嗨嗨嗨
  10. 绘图的尺寸_Auto CAD机械绘图尺寸标注教程1(尺寸标注简介)