gpt4 book ai didi

java - 在 spring 中使用 id 保护端点

转载 作者:行者123 更新时间:2023-11-30 05:28:36 26 4
gpt4 key购买 nike

我有一个关于 Spring 安全性的问题。假设我有这样的端点

 /orders/order/{userId}

当我有多个登录用户并且有人可以输入其他登录用户的 userId 时,如何防止出现这种情况。例如

User_1id = 1

User_2id = 2

现在 User_2 可以输入 User_1 的 ID 并检索他的订单或删除它。我应该检查每个请求是否来自 URL 的 id 等于当前登录的用户,还是有更好的方法可以使用 Spring Security 来做到这一点?当我在 URL 模式中使用用户名而不是用户 ID 时,也会出现相同的情况,例如

 /orders/order/{username}

最佳答案

当用户使用其凭据登录时,我们通常会为其生成唯一的 token 并将其发送给客户端。然后,客户端发送该 token 以进行进一步请求,以在服务器端验证用户。您可以创建并使用 Utils 类来生成 token 并验证用户。当用户在 /orders/order/{userId} 发出请求时,获取 userId 并将其与 token 中的 userId 进行映射。如果有效,则执行所需的操作或给出响应401/403(我在这里以 JWT token 为例)

public String getUsernameFromToken(String token) {
return getClaimFromToken(token, Claims::getSubject);
}

public String generateToken(User user) {
return doGenerateToken(user.getEmail() , user.getRole());
}

关于java - 在 spring 中使用 id 保护端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58024793/

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