2016-11-10 4 views
0

私のスプリングブートWebアプリケーションは、スプリングブートセキュリティでフォーム認証を使用します。
私は2つのテーブルを持っている:スプリングブートセキュリティ - 起動時にルートユーザを作成する

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 user 
(
    id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    username VARCHAR(255) NOT NULL, 
    password CHAR(60) NOT NULL, 
    //... 
); 

役割がために、テーブル

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

に参加他のロール/権限を持つユーザーを追加するには、ROLE_ROOTのロールをsys_roleにする必要があります。このrootユーザーは、add-more-usersアクションの前に論理的に存在する必要があります。私はを試してみました何

  • は私がアプリを展開する前に、ルート・ユーザーの挿入文を含むSQLスクリプトを実行したということです。明らかに、私はこのrootユーザーのために暗号化されたパスワードを手動で生成しなければなりませんでした。
  • 文法的にsqlスクリプトを実行してルート資格情報を挿入します。私の懸念事項は、ROOTユーザーの資格情報をdata.sqlファイルに含めることが安全でない可能性があるということです。暗号化されたバージョンのパスワードを置くと、事前に暗号化する必要があります。私は考えることができる

別の方法は、私はアプリが起動します初回のみルート作成・ページを作成することができるということです。他の人がルートアカウントを作成できないように、ユーザー名とパスワードに加えて秘密のコード(私とアプリケーションだけが知っている)が必要です。

これを行う一般的な方法はありますか?
そうでない場合は、どのような良い方法がありますか?

+0

あなたが実践的、起動時に生成された暗号化パスワード – sura2k

答えて

1

Springブートを使用している場合は、schema.sqlスクリプトとdata.sqlスクリプトをリソースクラスパス内に配置するだけです。

schema.sqlはテーブルとテーブル間の関連付けを担当し、data.sqlはテーブルをデータで初期化するため、テーブルのステートメントに挿入することができます。

サービスをアップロードすると、これらのスクリプトはアップロードごとにSpring Bootによって自動的に実行されます。

はさらに読書のために見てみましょう:

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

+0

おかげで、削除/挿入または更新/挿入クエリを実行することができます。私はすでにあなたが私の最初の方法で提案したことをしました。私の懸念事項は、ROOTユーザーの資格情報をdata.sqlファイルに含めることが安全でない可能性があるということです。暗号化されたバージョンのパスワードを置くと、事前に暗号化する必要があります。そうするよりエレガントな方法があるかどうかを知りたい。 –

+0

なぜあなたはそれが安全でないと信じていますか?このスクリプトはあなたのサービスを介してアクセスできません。 –

+0

私はいつもパスコードをファイルに入れるのは悪い考えだと思います。サーバ、ソースコードリポジトリ、ワークステーションがハッキングから完全に安全なものであれば、パスワードをファイルに保存することは問題ありません。 –

関連する問題