gpt4 book ai didi

java - Spring:实体的角色、权限和权限

转载 作者:行者123 更新时间:2023-12-01 16:30:34 24 4
gpt4 key购买 nike

下午好。如何在一个应用程序中为特定实体(类似于 RBAC/ABAC)的特定 Controller 配置用户的权限和角色,而不使用不同的 OAUTH2 服务?

示例:

应用具有全局用户角色:ROLE_USER、ROLE_ADMIN

还有一个名为项目的实体。用户可能是许多项目的成员。有一些项目用户角色:PROJECT_ADMIN、PROJECT_EDITOR、PROJECT_USER。每个项目角色都可以拥有自己的权限(权限),例如将用户添加到项目、编辑项目等。所有角色配置都存储在“project_roles”和“project_permissions”表中。

据我了解可以通过PreAuthorize注解实现,但是当前全局用户如何与项目角色匹配?

@PreAuthorize("@projectService.hasPermission('create_project', #projectEditRequest.id)") // How to pass GlobalUserID?
@PostMapping
public ProjectDto create(@RequestBody @Validated ProjectEditRequest projectEditRequest) {
...
...
}

也许有此类案例实现的示例?

提前致谢!

模拟问题:

Spring boot security roles per entity

Roles connected with entities in Java Spring (没有答案)

最佳答案

首先,OAuth2 根本不是执行此操作的正确方法,因为您正在谈论细粒度的、基于实体的授权。像这样的事情你可以用像 Spring ACL 这样的库来实现。然后,您的授权模型通常与您的安全实体驻留在同一数据库中,Spring Security 将通过 ACL(访问控制列表)和当前的 spring security(用户)上下文授予请求的 CRUD 操作。

从 OAuth2 中,您基本上只需使用主题/用户作为现有 ACL 条目的所有者。

关于java - Spring:实体的角色、权限和权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62049789/

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