gpt4 book ai didi

java - JWT Spring - 基于用户的访问

转载 作者:行者123 更新时间:2023-12-02 02:27:13 24 4
gpt4 key购买 nike

我正在 Spring boot 应用程序中实现基于 JWT 的身份验证。我有一个 Accounts 表,其中包含用户的银行帐户信息。现在,用户使用该表中的帐号和 PIN 码登录。问题是登录后,用户可以使用 JWT 分配的 token 访问任何内容。他甚至可以更改别人的帐户信息。如何限制仅对其创建 token 的用户进行访问?

每个用户都应该只能访问与该用户关联的信息,因此创建角色不是一个选项。 JWT 是否提供任何此类功能,或者我是否必须手动检查 token ?我可以解析 token 并从中检索帐号,并将其与 Controller 方法中传递的帐号进行比较,但这似乎不是一个简洁的解决方案,因为这需要更改每个 Controller 方法。

最佳答案

由于您的情况的安全性取决于业务逻辑,我想没有办法在身份验证提供者端执行此类验证。

你能做的就是借助 Spring 以 AOP 方式非常优雅地实现它。你可以使用 Spring method security 使用自定义安全解析器

@PreAuthorize("@securityResolver.isOwner(#userId)")
void changeAccount(UUID userId, Request body);

@Component("securityResolver")
public class CustomSecurityResolver {

public boolean isOwner(final String userId) {
//TODO business check here
}

}

您甚至可以将 JWT token 传递给安全解析器方法并实现自定义检查。在这种情况下,您可以避免更改服务的业务逻辑,而只需使用自定义解析器添加几个注释。

我总是在自定义方法安全性的帮助下实现诸如用户只能更改自己的信息租户隔离之类的检查

关于java - JWT Spring - 基于用户的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47634827/

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