【问题标题】:spring security how to retrieve username [duplicate]spring security如何检索用户名[重复]
【发布时间】:2012-03-08 05:03:45
【问题描述】:

可能重复:
When using Spring Security, what is the proper way to obtain current username (i.e. SecurityContext) information in a bean?

我正在使用 Spring Security,我想知道如何在我的控制器中检索当前登录的用户名。我可以将与登录用户名关联的用户 ID 也存储在某处吗? 目前我正在从 Privile 对象获取用户名

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;
    }
}

我在每个控制器方法中都得到了这个 Principal 对象。我不知道这是否是获得它的最佳方式。例如这里是代码

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

【问题讨论】:

    标签: java spring spring-mvc spring-security


    【解决方案1】:
    SecurityContextHolder.getContext().getAuthentication().getName()
    

    另外,可能是重复的:When using Spring Security, what is the proper way to obtain current username (i.e. SecurityContext) information in a bean?

    【讨论】:

      【解决方案2】:

      如果您只需要用户名,那么使用Principal 是有意义的,因为您通过这种方式与 Spring Security API 隔离。您将需要调用某些东西来访问用户名,因此您不妨让 MVC 基础架构将其传递给您。

      如果您需要来自 Spring Security 的更多信息(不仅仅是用户名),您可能需要查看 this answer。您还可以在网上其他地方找到有关此内容的讨论。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-24
        • 2018-05-07
        • 2019-09-30
        • 2012-12-19
        • 2012-06-18
        • 1970-01-01
        • 2021-10-27
        • 2014-11-24
        相关资源
        最近更新 更多