Java spring security如何检索用户名

Java spring security如何检索用户名,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,可能重复: 我正在使用spring security,我想知道如何在控制器中检索当前登录的用户名。我是否可以将与登录用户名关联的用户名也存储在某个位置? 目前我正在从Priciple对象获取用户名 public boolean populateUserName(ModelMap model, Principal principal) { if (principal != null) { String name = principal.getName();

可能重复:

我正在使用spring security,我想知道如何在控制器中检索当前登录的用户名。我是否可以将与登录用户名关联的用户名也存储在某个位置? 目前我正在从Priciple对象获取用户名

public boolean populateUserName(ModelMap model, Principal principal) {
    if (principal != null) {
        String name = principal.getName();
        model.addAttribute("username", name);
        System.out.println("userName - " + name);
        return true;
    }
    else
    {
        System.out.println("principal is null");
        return false;
    }
}
我在每个控制器方法中都得到这个主要对象。我不知道这是不是一个获得它的最佳方式。例如,下面是代码

@RequestMapping(value = "/secure/myitem.htm", method = RequestMethod.GET)
public ModelAndView showItem(@RequestParam("listingId") String listingId,
        ModelMap model, Principal principal) {
    populateUserName(model, principal);
    }

另外,可能是重复的:

如果您只需要用户名,那么使用
主体
是有意义的,因为这样您就与Spring安全API隔离了。您需要调用一些东西来访问用户名,因此您最好让MVC基础设施将其传递给您

如果您需要SpringSecurity提供的更多信息(不仅仅是用户名),您可能需要查看。你也可以在网上的其他地方找到这个讨论

SecurityContextHolder.getContext().getAuthentication().getName()