21
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SpringSecurityの認証済みユーザの情報にuserId,password以外をもたせる方法と参照方法

Last updated at Posted at 2018-01-16

#概要
自分用メモ、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>


21
21
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?