【问题标题】:how can i get data from Principal in controller? [duplicate]如何从控制器中的 Principal 获取数据? [复制]
【发布时间】:2021-03-26 13:32:54
【问题描述】:

我正在使用 Spring Boot 和 Spring Security。

我想在我的 userController 中获取当前经过身份验证的用户数据(不仅仅是名称、用户名、密码和权限)

我在不同的链接上发现我可以在我的 requestMapping 方法中使用 Principal。 但是,请问我该如何获取该委托人的数据呢?

如果我在调试模式下运行,我可以在 Principal 变量中看到我需要的所有数据。

@GetMapping("/users")
public ResponseEntity<?> getAllUsers(Principal principal) {
    
    return this.userService.getAllUsers();
}

【问题讨论】:

  • 我看到了这篇文章,但我希望可以从 Principale 获取数据,因为我可以在变量调试模式下看到数据,不是吗?
  • 您需要将其转换为 userdetails 对象,以便编译器知道它是什么对象以及对象上存在哪些方法。
  • 它不适用于 Principale。但它适用于身份验证,但它没有提供比用户名、电子邮件和权限更多的详细信息。我需要其他变量
  • 我解决了我的问题并编辑了我的帖子。谢谢

标签: java spring-boot spring-security


【解决方案1】:

您将其强制转换为用户详细信息对象:

final UserDetails currentUser = (UserDetails) ((Authentication) principal).getPrincipal();

【讨论】:

    猜你喜欢
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多