gpt4 book ai didi

Spring Data Rest Secure HATEOAS 链接

转载 作者:行者123 更新时间:2023-12-01 15:42:41 27 4
gpt4 key购买 nike

假设我有一个 User 实体,其中 ManyToMany 映射到 UserGroup 实体。如果我为两个实体创建存储库并获取 URI /users/1,我会收到如下响应:

{
"enabled" : true,
"password" : "xxxxxx",
"username" : "xxxxxx",
"credentialsNonExpired" : true,
"accountNonLocked" : true,
"accountNonExpired" : true,
"_links" : {
"self" : {
"href" : "http://127.0.0.1:45950/users/1"
},
"user" : {
"href" : "http://127.0.0.1:45950/users/1"
},
"userGroups" : {
"href" : "http://127.0.0.1:45950/users/1/userGroups"
}
}
}

此处的用户组链接非常有用。

我可以使用 /userGroups 端点列出所有 UserGroup。我想使用不同的 spring-security 表达式来保护 /userGroups 端点和 /users/1/userGroups 端点。

在这里使用引用:http://docs.spring.io/spring-data/rest/docs/current/reference/html/#security我了解如何保护第一个端点:

public interface UserGroupRepository extends PagingAndSortingRepository<UserGroup, Long> {

@PreAuthorize("hasRole('ROLE_ADMIN')")
@Override
Iterable<T> findAll();
}

但是我如何保护第二个端点?目前甚至可能吗?是否计划针对此类功能开展一些工作。我很乐意做出贡献。

最佳答案

我也遇到过这个问题,但没有找到任何使用 Spring 安全注释的解决方案。作为解决方法,我添加了一些内容:

@Override
protected void configure(HttpSecurity http) throws Exception {
http
// Whatever config you already have.
.authorizeRequests()
.antMatchers("/users/*/userGroups").hasRole("ADMIN");
}

我对 WebSecurityConfigurerAdapter 的实现。虽然这可行,但它重复了保护存储库时完成的工作,并且在添加新存储库时很容易忘记添加 java 配置和注释。

关于Spring Data Rest Secure HATEOAS 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35364517/

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