【发布时间】:2016-11-10 00:37:10
【问题描述】:
我的 Spring Boot Web 应用使用带有 spring-boot-security 的表单身份验证。
我有两个表:
User
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 用户必须在 add-more-users 操作之前存在。
我试过的是这样的
- 在部署应用程序之前,我运行了一个包含 root-user-insertion 语句的 sql 脚本。显然,我还必须手动为这个 root 用户生成一个加密密码。
- 我在语法上运行了一个 sql 脚本来插入根凭据。我担心在 data.sql 文件中包含我的 ROOT 用户凭据可能不安全。如果我输入密码的加密版本,我必须事先对其进行加密。
另一种方式我能想到的是,我只能在应用程序第一次启动时创建一个根创建页面。除了用户名和密码外,我还需要一个密码(只有我和应用知道),这样其他随机人都无法创建 root 帐户。
这些是常见的方法吗?
如果没有,有什么好的方法?
【问题讨论】:
-
您可以在启动时使用生成的加密密码务实地执行删除/插入或更新/插入查询
标签: java spring spring-mvc spring-security spring-boot