我正在使用身份验证和不同的角色来构建一个后端。现在的问题是,我想根据用户角色来过滤结果。
我还没有自己实现控制器,而是使用了
PagingAndSortingRepository Inferface
,效果很好。我正在寻找的与此python-django
method类似。
解决方案必须符合REST模式。
为了更加清楚,这是一个示例:
假设我有两个用户,用户A是具有“用户”角色的普通用户。用户B是具有“管理员”角色的管理员。
有一个数据库表,其中存储着userData
。该表如下所示。
| ID | username | name | email |
他们俩都向GET
发送了一个简单的已认证 /userData
请求。
现在,我的后端根据authentication
标头检测用户并添加角色。
现在,根据角色,用户A应该仅获得包含其个人数据的应答者,用户B应该获得可通过/userData
访问的所有数据。
对用户A的响应:
{
"res":[
{
"id":1,
"username":"userA",
"name":"A",
"email":"userA@mail.com"
}
]
}
对用户B的响应:
{
"res":[
{
"id":1,
"username":"userA",
"name":"A",
"email":"userA@mail.com"
},
{
"id":2,
"username":"userB",
"name":"B",
"email":"userB@mail.com"
},
{
"id":3,
"username":"userC",
"name":"C",
"email":"userC@mail.com"
}
]
}
答案 0 :(得分:0)
我为Spring-Data-Jpa创建了一个扩展,可以处理这些需求(更多)。 spring-data-jpa-acl
您可以通过角色或关联来设置规则,并添加一些简单的注释,并且所有data-jpa方法和REST端点都将受到这些规则的影响。 该扩展为JPA查询添加了额外的规范,因此所有过滤都将在数据库端进行,因此您甚至可以对已过滤的数据使用分页。