2月2日(月)3コマ目
今日、やったこと
xss検証用サイト構築
今日のホワイトボード
前回は認証機能の途中まで作成。
認証機能(UserDAOクラスのインスタンス生成)
コントローラで認証をする際、必要になるUserDAOクラスのインスタンスは、SpringBootのDI機能を使って、インスタンスを生成。
インスタンス生成するクラス(UserDAOクラス)には、@Repositoryアノテーションを付与。
インスタンスを代入する変数(フィールド)には、@Autowiredアノテーションを付与。
|
| 図 @Repository、@Autowired |
UserDAO.java
@Repositoryアノテーションをつけると、SpringBootのDIコンテナに登録される。
認証機能(リクエストを跨いで認証済み情報を共有したい)
コントローラクラスのメソッドの引数modelはリクエスト毎にインスタンス生成されるため、リクエストを跨いで情報を共有することはできない。
一旦、認証されると、認証情報を保持したいが、引数modelではできない。
リクエストを跨いで共有できるのは、Sessionオブジェクト。
|
| 図 引数modelとSessionオブジェクトの違い |
SpringBootでは、Sessionオブジェクトは引数で受け取ることができる。
MessageController.java
UserDAOクラス型のdaoフィールドには@Autowiredを付与することで、SpringBootがUserDAOクラスのインスタンスを代入してくれる。
login()、logoff()メソッドの引数sessionはSessionオブジェクト。SessionオブジェクトはSpringBoot側で取得し、引数に代入してくれる。
index.html
Thymeleafにて、Sessionオブジェクトにアクセスするには、sessionでOK。
Sessionオブジェクトにキー”user”でセットされたオブジェクトを取得するには、session.userでOK。
メッセージ投稿
新たにメッセージを投稿する。
ユーザー情報が必要なので、Sessionオブジェクトから認証済みユーザー情報を取得する。
MessageController.java
index.html
次回は
このアプリケーションを使って、Webアプリケーションのセキュリティの話をちまちまと。

