この記事の概要
新規Springスターターで「Spring Security」を選択すると簡単にログイン画面を作成することができます。このサンプルプログラムを示します。
プロジェクトの作成
【操作】
1.プロジェクトエクスプローラ > Ctrl+n > 新規プロジェクト画面が表示
2.Spring Boot > Springスターター・プロジェクト > 次へ

【操作】
「Springスターター・プロジェクト」画面にて、名前等を任意に入力(デフォルトのままでもOK)し、「次へ」ボタンを押下

ログイン画面を作成するが、後ほど、情報をDBから取得するようにバージョンアップしたいのでDB接続まわりについても選択する。
【操作】
以下の6つを選択し、「次へ」ボタン押下
選択内容 | 説明 |
Spring Boot DevTools | リフレッシュサイクルの高速化 |
MyBatis Framework | O/Rマッパーの一つ。SQL文とJavaオブジェクトを紐付けるイメージ |
MySQL Driver | MySQLのドライバー |
Spring Security | デフォルトのログイン画面の提供、パスワードの暗号化 |
Thymeleaf | タイムリーフというテンプレートエンジン |
Spring Web | Web機能ならこれ |

【操作】
「完了」ボタンを押下
少し時間がかかりますが、プロジェクトが作成される


実装

上記の2クラス、1つのhtmlでインメモリのログイン機能を動作させることができます。
これらについて説明します。
ファイル名(クラス) | 説明 |
SecurityConf | クラスには、@EnableWebSecurity ■configure(AuthenticationManagerBuilder auth) ユーザの認証方式、その内容をチェーンメソッドで設定するイメージ .inMemoryAuthentication() インメモリ方式、他に、DB方式、LDAP .withUser(“user”) ユーザ名はuser .password(passwordEncoder().encode(“password”)) エンコード(ハッシュ化)したパスワードで認証、内容はpassword .roles(“USER”) ロールはUSER ■configure(HttpSecurity http) Webアプリのリソースへのアクセス制御の対象と画面 .authorizeRequests() .anyRequest().authenticated() .and() .formLogin デフォルトのログイン画面を使用する ■PasswordEncoder passwordEncoder() 平文のパスワードをハッシュ化するためのメソッド return new BCryptPasswordEncoder() |
RootController | @RequestMapping(“/”)で戻り値に、「 NewFile.html 」を指定している |
NewFile.html | @RequestMappingで指定したファイル名 ※ログイン成功時に遷移する画面 |
■SecurityConf

■RootController

■NewFile.html

実行
【操作】
1.プロジェクトエクスプローラで対象のプロジェクトを選択
2.右クリック > 実行 Spring Bootアプリケーション


上記のようにアプリが起動したら、ブラウザからアクセスする
【操作】
1.「http://localhost:8080/」
2.あとは以下の絵の通りです。
ログイン画面が表示されるので、ソースにベタ書きしているユーザ名、パスワードと
合致すれば、認証OKで設定したhtml画面が表示される。
合致しなければ再入力を促されます。
