【问题标题】:Spring Security principal.getName() returns object reference rather than the username [closed]Spring Security principal.getName() 返回对象引用而不是用户名 [关闭]
【发布时间】:2017-03-09 23:33:47
【问题描述】:

如果我这样做:

if (principal instanceof UserDetails) {
      username = ((UserDetails) principal).getUsername();
} 
else {
      username = principal.toString();
}

它显然应该返回用户名,但实际上它返回我的用户类的 toString() 结果

【问题讨论】:

  • 从 principal.getName() 获得的对象类型是什么?
  • @LyjuIEdwinson 我的域用户类
  • 我一头雾水,User类怎么是String?
  • 不是,但是 principal.getName() 返回的是用户类的 toString() 输出。只覆盖 toString 以返回我想要的用户名是不好的做法吗?
  • 好的。那很好。如果您需要帮助,那么也许您应该向我们展示您的代码。我什至不知道“为我的用户类返回 toString() 输出”是什么意思。向我们展示您的代码。否则,好吧,祝你有美好的一天。

标签: java spring spring-boot spring-security


【解决方案1】:

用户名可以通过以下代码获取

        if (principal instanceof UserDetails) {
            username = ((UserDetails) principal).getUsername();
        } else {
            username = principal.toString();
        }

【讨论】:

  • 这正是我正在使用的,但它返回我的用户类的 toString() 结果。
猜你喜欢
  • 2018-05-28
  • 2017-10-13
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
相关资源
最近更新 更多