現在のログインしているユーザ名をSpring Securityで取得する
この記事では、Spring Securityで現在ログインしているユーザー名を取得する3つの方法を示します。
1. SecurityContextHolder Authentication.getName()
import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class LoginController { @RequestMapping(value="/login", method = RequestMethod.GET) public String printUser(ModelMap model) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String name = auth.getName();//get logged in username model.addAttribute("username", name); return "hello"; } //...
2. SecurityContextHolder User.getUsername()
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.User; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class LoginController { @RequestMapping(value="/login", method = RequestMethod.GET) public String printUser(ModelMap model) { User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal(); String name = user.getUsername();//get logged in username model.addAttribute("username", name); return "hello"; } //...
3. UsernamePasswordAuthenticationToken
これはより洗練された解決策です。実行時にSpringは
UsernamePasswordAuthenticationToken`を
Principal`インターフェースに注入します。
import java.security.Principal; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class LoginController { @RequestMapping(value="/login", method = RequestMethod.GET) public String printWelcome(ModelMap model, Principal principal ) { String name = principal.getName();//get logged in username model.addAttribute("username", name); return "hello"; } //...
ソースコードをダウンロードする
ダウンロードする –
Spring-Security-Get-Logged-In-Username.zip
(9 KB)
参考文献
JavaDoc]。
http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/core/userdetails/User.html
[User
JavaDoc]。
ユーザー名パスワードの認証
JavaDoc]