gpt4 book ai didi

spring-security - 如何保障协会资源?

转载 作者:行者123 更新时间:2023-12-02 01:42:13 25 4
gpt4 key购买 nike

问题可以通过以下示例来定义:

我有一个类MainClass,它通过@OneToOne关系与另一个名为AssociatedClass的类相关。两者都有一个公开的存储库,因此我可以在 URL /mainClasses/{some_id} 和 URL /linkedClasses/{some_id} 上执行 GET。但是,AssociatedClassRepository 具有以下代码:

@RepositoryRestResource
public interface AssociatedClassRepository extends PagingAndSortingRepository<AssociatedClass, String> {
@Override
@PreAuthorize("1 == 2")
AssociatedClass findOne(String s);
}

因此它永远不会将 GET 方法授权给 AssociatedClass 类型的对象。但是,由于 MainClass 类型的对象关联了一个 AssociatedClass 对象,因此我可以通过在 /mainClasses/{some_id}/linkedClass< 处执行 GET 来获取该对象.

我想阻止对 /mainClasses/{some_id}/linkedClass 的访问,但不是所有用户。我想以与通过 @PreCondition 相同的方式定义一些条件。这样,只有经过身份验证的用户是资源的所有者时,我才能允许访问,这是我的真正目标。

有什么想法吗?

最佳答案

一种选择是在 URL 级别保护 Spring Data REST 端点。例如:

        @Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/entity/{[0-9]+}/{[A-Za-z][A-Za-z0-9]+}").hasRole("ADMIN").
and().csrf().disable();
}
}

公共(public)访问:

  • /实体
  • /entities/entityId

管理员访问权限:

  • /entities/entityId/关联实体

关于spring-security - 如何保障协会资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57482085/

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