dan*_*nik 65 java spring spring-mvc spring-security
我正在使用Spring Security 3和Spring MVC 3.05.
我想打印当前登录用户的用户名,如何在Controller中获取UserDetails?
@RequestMapping(value="/index.html", method=RequestMethod.GET)
public ModelAndView indexView(){
UserDetails user = ?
mv.addObject("username", user.getUsername());
ModelAndView mv = new ModelAndView("index");
return mv;
}
Run Code Online (Sandbox Code Playgroud)
sou*_*ica 114
如果您已经确定用户已登录(在您的示例中,如果/index.html
受到保护):
UserDetails userDetails =
(UserDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
Run Code Online (Sandbox Code Playgroud)
要首先检查用户是否已登录,请检查当前Authentication
是否为a AnonymousAuthenticationToken
.
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (!(auth instanceof AnonymousAuthenticationToken)) {
// userDetails = auth.getPrincipal()
}
Run Code Online (Sandbox Code Playgroud)
Far*_*arm 32
让Spring 3注射解决这个问题.
感谢tsunade21,最简单的方法是:
@RequestMapping(method = RequestMethod.GET)
public ModelAndView anyMethodNameGoesHere(Principal principal) {
final String loggedInUserName = principal.getName();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
107386 次 |
最近记录: |