gpt4 book ai didi

java - REST 服务仅返回当前用户相关的资源

转载 作者:太空宇宙 更新时间:2023-11-04 12:24:01 24 4
gpt4 key购买 nike

我有一个使用 Spring MVC (RestControllers) 和基于 token 的安全性(使用 Spring Security)实现的 REST 服务。如何根据用户身份过滤资源?假设用户有一些报告。如何通过调用/reports让授权用户仅查看他的报告?

显然我可以将 userId 作为请求参数或路径变量,但有些东西告诉我这是一个不好的做法。

我假设我可以使用 Spring Security 功能来实现这一点,但是我到底该如何做到这一点,更重要的是,应用此类过滤的最合适的位置在哪里? Controller 应该对传递用户身份的服务执行调用,还是应该以某种方式在存储库级别检索它(我使用 Spring Data JPA)?提前致谢

最佳答案

每当用户成功登录时,您就有Authentication对象。它包含对象主体对象凭据设置权限

您需要做的就是覆盖UserDetailsS​​ervice,为经过身份验证的用户添加新参数。在身份验证中添加您的 userId 作为 shown in blog

现在当你这样做

SecurityContextHolder.getContext().getAuthentication().getPrincipal() 这将返回 spring security 的 User 对象。 您可以从此处获取用户 ID 并在 Controller 中使用它来执行必要的操作。

关于java - REST 服务仅返回当前用户相关的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com