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

问题:

我有一个使用Spring Security的Spring MVC Web应用程序。我想知道当前登录用户的用户名。我正在使用下面的代码段。这是接受的方式吗?
我不喜欢在这个控制器内部调用一个静态方法 – 这违反了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();

 }

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: When using Spring Security, what is the proper way to obtain current username (i.e. SecurityContext) information in a bean?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

74 + = 82