Spring Security——基于数据库的用户信息认证

Spring Security——基于数据库的用户信息认证

一、前言

上一篇文章里提到,可以通过 application.properties 配置文件和java配置(继承 WebSecurityConfigurerAdapter类)来进行用户信息的配置。其中在java配置里,我们是把用户信息写到了内存里,并没有将其持久化到数据库中,今天我们就来看下在 Spring Security 中,如何基于数据库进行用户信息的认证。

二、数据库建表

我们需要创建3张表,分别是user表、role表、user_role表,分别对应用户表、角色表、用户_角色中间表。每个表的对应sql语句已在下面贴出,在Navicat或其它工具新建查询执行便可创建。下面分别对表字段进行解释:

1.user表
  • id,自增主键
  • username,登录的用户名;
  • password,经过加密的用户密码;
  • enable,表示用户账号是否被禁用,默认为1,即默认启用;
  • locked, 表示用户账号是否被锁定,默认为0,即默认未锁定;
  • account_expire,表示用户账号是否过期,默认为0,即默认未过期;
  • password_expire,表示用户密码是否过期,默认为0,即默认未过期。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `password` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `enabled` tinyint(1) NOT NULL DEFAULT 1,
  `locked` tinyint(1) NOT NULL DEFAULT 0,
  `account_expire` tinyint(1) NOT NULL DEFAULT 0,
  `password_expire` tinyint(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'root', '$2a$10$ypnJvCAtep4JYQJgrYBwG.Mtd7KhjqraKUkHtT0JEa2I3WgQmY21K', 1, 0, 0, 0);
INSERT INTO `user` VALUES (2, 'boss', '$2a$10$OasZtTbr9CZjGGYeiWanCe6pfrptcexka8yvLD295ywN8Ebl/pRSa', 1, 0, 0, 0);
INSERT INTO `user` VALUES (3, 'staff', '$2a$10$G.dc1cycBAYgft/1Ul4gjOACVP8H/ljCIR56DufuMuIP6rbKxpJiO', 1, 0, 0, 0);

SET FOREIGN_KEY_CHECKS = 1;
2.role表
  • id,自增主键;
  • name,角色名,此处需要注意,Spring Security中用户角色名必须以Role_开头,可以选择在数据库中直接添加,也可以选择在java代码中进行拼接,此处是后者;
  • description,角色介绍。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of role
-- ----------------------------
INSERT INTO `role` VALUES (1, 'dba', '数据库管理员');
INSERT INTO `role`
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值