Java Spring启动安全性-启动时创建根用户
我的Spring Boot web应用程序使用具有Spring Boot安全性的表单身份验证。Java Spring启动安全性-启动时创建根用户,java,spring,spring-mvc,spring-security,spring-boot,Java,Spring,Spring Mvc,Spring Security,Spring Boot,我的Spring Boot web应用程序使用具有Spring Boot安全性的表单身份验证。 我有两张桌子: 用户 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)
我有两张桌子:
用户
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,
// ...
);
联接表
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\u role表中使用角色role\u ROOT
。逻辑上,此根用户必须在“添加更多用户”操作之前存在
我试过的是
- 在部署应用程序之前,我运行了一个包含根用户插入语句的sql脚本。显然,我还必须手动为这个根用户生成加密密码李>
- 我按语法运行sql脚本以插入根凭据。我担心在data.sql文件中包含我的根用户凭据可能不安全。如果我输入密码的加密版本,我必须事先加密它
如果没有,有哪些好方法?如果使用Spring Boot,您所要做的就是将schema.sql和data.sql脚本放在资源类路径中 schema.sql将负责创建表以及它们之间的关联,data.sql将负责使用数据初始化表,因此您可以在其中插入insert into tables语句 当您上传服务时,这些脚本将在每次上传时由Spring Boot自动执行 进一步阅读请参阅:
您可以使用生成的加密密码在StartupThank实用地执行删除/插入或更新/插入查询。我已经按照你在我的第一种方法中的建议做了。我担心在data.sql文件中包含我的根用户凭据可能不安全。如果我输入密码的加密版本,我必须事先加密它。我想知道是否有更优雅的方法。你为什么认为这样做不安全?此脚本无法通过您的服务访问。我始终认为将密码放在文件中是个坏主意。我知道,如果我的服务器、源代码repo和工作站完全安全,不受黑客攻击,那么将密码存储在文件中不会有任何危害。那么对密码进行编码和加密呢?