gpt4 book ai didi

java - Spring Boot 安全性 - 启动时创建 root 用户

转载 作者:行者123 更新时间:2023-11-30 02:44:47 27 4
gpt4 key购买 nike

我的 Spring Boot Web 应用程序使用带有 spring-boot-security 的表单例份验证。
我有两张 table :
用户

CREATE TABLE user
(
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
password CHAR(60) NOT NULL,
//...
);

角色

CREATE TABLE role
(
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
r_name VARCHAR(45) NOT NULL
);
CREATE UNIQUE INDEX sys_role_r_name_uindex ON sys_role (r_name);

连接表

CREATE TABLE ref_user_role
(
user_id INT(11) NOT NULL,
role_id INT(11) NOT NULL,
// ...
);

为了添加更多具有其他角色/权限的用户,必须是 sys_role 表中的角色 ROLE_ROOT。从逻辑上讲,该 root 用户必须在添加更多用户操作之前存在。

我尝试过是这样的

  • 在部署应用程序之前,我运行了一个包含 root-user-insertion 语句的 sql 脚本。显然,我还必须手动为该 root 用户生成加密密码。
  • 我按照语法运行 SQL 脚本来插入根凭据。我担心的是,将我的 ROOT 用户凭据包含在 data.sql 文件中可能不安全。如果我输入加密版本的密码,我必须事先对其进行加密。

另一种方法我能想到的是,我只能在应用程序第一次启动时创建根创建页面。除了用户名和密码之外,我还需要一个 secret 代码(只有我和应用程序知道),这样其他人就无法创建根帐户。

这些是执行此操作的常见方法吗?
如果没有的话,有什么好的方法吗?

最佳答案

如果您使用 Spring Boot,您所要做的就是将 schema.sql 和 data.sql 脚本放置在资源类路径中。

schema.sql 将负责创建表以及它们之间的关联,而 data.sql 将负责用数据初始化表,因此您可以将 insert into rows 语句放在那里。

当您上传服务时,Spring Boot 每次上传时都会自动执行这些脚本。

要进一步阅读,请查看:

http://docs.spring.io/spring-boot/docs/1.4.2.RELEASE/reference/htmlsingle/#howto-database-initialization

关于java - Spring Boot 安全性 - 启动时创建 root 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40518276/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com