如何在@RestController 中获取用户? [复制]
Posted
技术标签:
【中文标题】如何在@RestController 中获取用户? [复制]【英文标题】:How to get the user in the @RestController? [duplicate] 【发布时间】:2018-09-29 01:38:40 【问题描述】:我正在创建一个基于 jwt 的身份验证。这是一种魅力。 我已经通过帖子在@restcontroller 中创建了注册和登录方法。
现在,我需要创建更新用户方法。 用于更新登录用户本身的信息。
在 JWT 之前,我们曾经从会话中获取登录用户的 id。如何使用 JWT 做到这一点?
@PostMapping("/user/profile")
public ResponseEntity<?> saveProfile(@Valid @RequestBody UserProfileDTO userProfile)
/* Of course the userPofileForm does not contain a hidden field
with the ID of the user because it woud allow the user to mofify
it and update another user.
*/
return null;
【问题讨论】:
检查this和this 【参考方案1】:这是您如何解决此问题的示例:
@PostMapping("/user/profile")
public ResponseEntity<?> saveProfile(@Valid @RequestBody UserProfileDTO userProfile,Principal userLogin)
String username=userLogin.getName();
return username;
【讨论】:
【参考方案2】:尝试将user id
添加到 jwt 的正文中,并在每个经过身份验证的请求的标头中接受 jwt 令牌。
-
一旦您的控制器能够获取 jwt 令牌,将其解密并获取用户 ID。
在对 jwt 令牌进行身份验证时,将身份验证添加到 SecurityContextHolder 并在应用程序的任何位置获取用户身份验证
【讨论】:
以上是关于如何在@RestController 中获取用户? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何响应 Spring RestController 返回 ManyToOne 双向 JPA 实体对象?
如何在 Spring Boot 的另一个 RestController 中使用 @Autowired/@Inject 访问 RestController 的路径?
Angular 从 Spring RestController 获取图像并缓存它
ControllerAdvice 的异常处理程序在使用 Spring Boot 的 Rest API 获取请求中不起作用。如何解决?