java - Spring Security如何检索用户名

标签 java spring spring-mvc spring-security

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

我正在使用 spring security,我想知道如何检索 Controller 中当前登录的用户名。我可以将与登录用户名关联的用户 ID 存储在某处吗? 目前我正在从 Prciple 对象获取用户名

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

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

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

最佳答案

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

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

关于java - Spring Security如何检索用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9317376/

相关文章:

java - Google App Engine 的负载平衡器如何工作?

spring - Grails-Spring安全性漏洞:使用[dot]绕过URL

java - @RequestMapping 和 @RenderMapping 有什么区别

java - 如何为 ADFS 配置 spring boot security OAuth2?

java - 我需要显式插入 spring-core 模块吗?

java - ScheduledExecutorService - 更新里面的数据

java - 将此 if-then-else 语句替换为单个 return 语句

java - 不使用命名参数时重用 sql 参数

java - 将 Spring 项目从 tomcat 7 迁移到 tomcat 8

java - 如何使用存储在数据库表中的属性配置 Spring bean