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

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-user-insertion语句的sql脚本。显然,我还必须为此root用户手动生成一个加密密码。
我以语法方式运行sql脚本以插入根凭据。我担心的是,将我的ROOT用户凭据包含在data.sql文件中可能并不安全。如果输入密码的加密版本,则必须事先对其进行加密。


我可以想到的另一种方法是,只有在应用程序首次启动时,我才能创建一个root-creation-page。除了用户名和密码外,我还需要一个密码(只有I和应用知道),以便其他任何随机的人都不能创建root帐户。

这些是执行此操作的常用方法吗?
如果没有,有哪些好的方法?

最佳答案

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

schema.sql将负责创建表及其之间的关联,而data.sql将负责使用数据初始化表,因此您可以在其中插入insert到表语句中。

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

要进一步阅读,请查看:

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

09-10 09:42
查看更多