Spring Boot + Spring Security通过数据库验证用户身份信息

Spring Boot + Spring Security 实现通过数据库进行用户身份信息的认证以及授权


2020年12月24日更新:
最近在学习Spring Security时的一些问题总结,以及一个完整的demo示例。该demo示例,实现了通过mysql数据库进行用户身份信息的登录认证,以及页面的动态授权显示。
完整代码已上传至Gitee仓库,地址:Spring Boot-Spring Security-Demo

1.mysql数据库中的准备

1.1 建立数据库 db_authority

1.2 建立表 tb_user

表中字段为:id name password role

CREATE TABLE `tb_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL COMMENT '用户名',
  `password` varchar(255) DEFAULT NULL COMMENT '用户密码',
  `role` varchar(255) DEFAULT NULL COMMENT '用户角色,所拥有的权限',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2 建立Spring Boot项目

版本为: Spring Boot 2.4.1
Spring Security版本为: Spring Security 5
Mysql 数据库: MySql 8.0

初始化所勾选依赖jar包:

在这里插入图片描述

项目初始化完成。

2.1 编写项目配置文件

在路径 resources/application.yml编辑 application.yml文件

spring:
  profiles:
    active: dev
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: none
  thymeleaf:
    cache: false
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_authority?serverTimezone=GMT%2B8
    username: root
    password: root

2.2 建立包 domain

在该包下,编写实体类 User 映射数据库的表 tb_user, 实现spring security中内置的用户信息类 UserDetails

@Entity(name = "tb_user")  //映射数据库中的tb_user表
@Data  //Lombok注解,生成getter setter
public class User implements UserDetails {
   

    @Id //标识为主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)  //主键自增
    private Long id;
    private String name;
    private String password;
    private String role;

    //返回用户信息中所有认证权限,用户权限集
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
   
        //获取用户所有权限
        String[] roles = role.split(",");
        //取出所有的权限,并且给每个权限都要进行认证,添加到 SimpleGrantedAuthority()
        List<SimpleGrantedAuthority> simpleGrantedAuthorities = new ArrayList<>();
        //遍历roles,取出每一个权限,添加到 简单的授予认证类
        for (String s : roles) {
   
            //添加了 ROLE_ 前缀 为了前端页面thymeleaf-security 中自带的 hasRole()方法,能得到ROLE_格式的角色信息
            simpleGrantedAuthorities.add(new SimpleGrantedAuthority(
  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot 是一个用于构建微服务的开源框架,它能够快速搭建项目并且提供了许多便捷的功能和特性。Spring Security 是一个用于处理认证和授权的框架,可以保护我们的应用程序免受恶意攻击。JWT(JSON Web Token)是一种用于身份验证的开放标准,可以被用于安全地传输信息Spring MVC 是一个用于构建 Web 应用程序的框架,它能够处理 HTTP 请求和响应。MyBatis 是一个用于操作数据库的框架,可以简化数据库操作和提高效率。Redis 是一种高性能的键值存储系统,可以用于缓存与数据存储。 基于这些技术,可以搭建一个商城项目。Spring Boot 可以用于构建商城项目的后端服务,Spring Security 可以确保用户信息的安全性,JWT 可以用于用户身份验证Spring MVC 可以处理前端请求,MyBatis 可以操作数据库,Redis 可以用于缓存用户信息和商品信息。 商城项目的后端可以使用 Spring BootSpring Security 来搭建,通过 JWT 来处理用户身份验证和授权。数据库操作可以使用 MyBatis 来简化与提高效率,同时可以利用 Redis 来缓存一些常用的数据和信息,提升系统的性能。前端请求则可以通过 Spring MVC 来处理,实现商城项目的整体功能。 综上所述,借助于 Spring BootSpring Security、JWT、Spring MVC、MyBatis 和 Redis 这些技术,可以构建出一个高性能、安全可靠的商城项目,为用户提供良好的购物体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值