#概要
自分用メモ、SpringSecurity関連のチュートリアルでは、認証に使うuserId,passwordはセッションから参照できるとあるが、他の任意のパラメータはどうなのとおもっただけです。
何の事はない、UserDetailsをimplementsしたクラスにgetterをつければいいだけでした。。
##簡単なクラス例
public class User {
private String userId;
private String password;
private String hoge;
//getter,setter省略
}
public class UserDetailsImpl implements UserDetails {
private final User user;
public UserDetailsImpl(User user) {
this.user = user;
}
public String getHoge() {
return user.getHoge();
}
//Overrideすべきメソッド省略
}
認証方法は以前書いた記事を見てください
SpringSecurityでDBログイン認証処理を実装してみた(MyBatis使用)
SpringSecurityでDBログイン認証処理を実装してみた(MyBatis使用)その2
###上記のようなユーザの認証後、セッションに保存されたユーザ情報にコントローラでアクセスする方法。AuthenticationPrincipalアノテーションを利用
@Controller
public class Controller {
@RequestMapping("/")
public index(@AuthenticationPrincipal UserDetailsImpl userDetails) {
System.out.println(userDetails.getUserId) // userId
System.out.println(userDetails.getPassword) //password
System.out.println(userDetails.getHoge) //hoge
}
###おまけ、Thymeleafから参照する方法
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4"> <!-- これを追加してThymeleafからSpringSecurityを利用 -->
<!-- 省略 -->
<body>
<h>こんにちは、<span sec:authentication="principal.userId"></span>さん</h> <!-- principal.メンバ変数名 で参照できる -->
</body>