spring security 得到用户名的几种方法
By:Roy.LiuLast updated:2013-12-16
如果用 spring security 做权限检查框架,怎么得到当前登录用户的用户名呢,这是一个必然遇到的问题,一般来说,有三种方法.
方法一, SecurityContextHolder + Authentication.getName()
在spring controller 中如下代码:
方法二, SecurityContextHolder + User.getUsername()
方法三, UsernamePasswordAuthenticationToken
这也许是一种很优雅的方法,在运行过程中,spring 将UsernamePasswordAuthenticationToken 注入到 Principal 接口中, 注意controller中方法的编写.
方法一, SecurityContextHolder + Authentication.getName()
在spring controller 中如下代码:
Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String name = auth.getName(); //get logged in username
方法二, SecurityContextHolder + User.getUsername()
User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal(); String name = user.getUsername(); //get logged in username
方法三, UsernamePasswordAuthenticationToken
这也许是一种很优雅的方法,在运行过程中,spring 将UsernamePasswordAuthenticationToken 注入到 Principal 接口中, 注意controller中方法的编写.
@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"; }
From:一号门
Previous:spring secruity 教程自定义 403 页面
COMMENTS