gpt4 book ai didi

java - 我应该在哪里验证用户是否有权访问资源?

转载 作者:行者123 更新时间:2023-12-02 10:18:16 25 4
gpt4 key购买 nike

我正在使用 Java spring 构建 Rest API,为了保护端点,我已经实现了基于 JWT 的身份验证。

我已经设置了一个过滤器,在其中验证 token 并恢复用户和角色。到目前为止,这工作得很好,但是,我不知道应该在哪里实现基于用户和角色的授权。

例如:如果 x 是管理员,他/她可以访问任何端点如果y是id为1的用户,她/他只能访问她/他的资源;例如/user/1/books。

我倾向于在验证 JWT 的同一个过滤器中进行此授权,但是,我必须解析 url 以查找它是否到达正确的端点。另一种可能性是直接在 Controller 中实现,但我不喜欢这种方法,因为我觉得这会压垮 Controller 业务逻辑。

感谢和问候

最佳答案

既然您标记了“spring-security”,我假设您正在使用它;-)。

您可以使用大量 spring 内置检查来执行您的首选检查。您可以在服务注释中使用 @PreAuthorize @PostAuthorize 和 EL 检查。我认为 spring 会将它用作额外的过滤器链,但我不太清楚。如果检查没有成功处理,spring将返回4xx状态码。

@PreAuthorize("@someBean.someCheck(authentication)")
public void yourServiceMethod(...)

(认证对象由spring映射)

public boolean someCheck(Authentication auth)

另请参阅:

关于java - 我应该在哪里验证用户是否有权访问资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527138/

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