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アプリケーションのセキュリティの話をちまちまと。


 

このブログの人気の投稿

1月13日(火)3コマ目

2月2日(月)4コマ目

2月10日(火)3コマ目