java – 当使用Spring Security时,在bean中获取当前用户名(即SecurityContext)信息的正确方法是什么?

我有一个Spring MVC web应用程序使用Spring Security。我想知道当前登录的用户的用户名。我使用下面给出的代码片段。这是被接受的方式吗?

我不喜欢在这个控制器中调用一个静态方法 – 这打破了Spring,IMHO的整个目的。有没有办法配置应用程序具有当前的SecurityContext或当前的认证,而不是注入?

  @RequestMapping(method = RequestMethod.GET)
  public ModelAndView showResults(final HttpServletRequest request...) {
    final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();
    ...
  }
如果你使用Spring 3,最简单的方法是:

 @RequestMapping(method = RequestMethod.GET)   
 public ModelAndView showResults(final HttpServletRequest request, Principal principal) {

     final String currentUser = principal.getName();

 }
http://stackoverflow.com/questions/248562/when-using-spring-security-what-is-the-proper-way-to-obtain-current-username-i

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 当使用Spring Security时,在bean中获取当前用户名(即SecurityContext)信息的正确方法是什么?