gpt4 book ai didi

java - 如果我们从配置中保护 REST API,是否有必要在 Spring 中使用方法级安全性

转载 作者:行者123 更新时间:2023-11-30 07:14:42 26 4
gpt4 key购买 nike

我想问一下是否有必要通过 Pre 和 Post 注释来保护我在 REST Controller 中调用的方法。我已经通过java配置配置了安全性,如下所示:

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.and()
.formLogin()

(...)

.and()
.authorizeRequests()
.antMatchers("/api/**").hasAuthority("ROLE_USER");
}

因此/api 下的每个请求都应该由 ROLE_USER 授权。我试图在互联网上找到一些有关此问题的信息,但我唯一能找到的是: https://coderanch.com/t/549265/Spring/method-security-spring-security

但是我真的想不出黑客会以某种方式访问​​服务层中的方法的用例。

最佳答案

服务层的URL安全和方法安全针对不同的用例。

如果您需要的只是控制只有具有特定角色的用户才能调用具有给定前缀的 URL(此处为 API),那么您需要的是 URL 安全性。

如果您有一个复杂的应用程序,其中某些服务方法可以从不同的 Controller 调用,并且您想确保您没有限制访问,那么方法安全性可以通过确保只有有效的用户才能执行某些操作来提供帮助商业行为。

如果您有一个复杂的安全模型,例如多个办公室,每个办公室都有一名经理对其自己的员工数据具有读取和/或写入访问权限,则直接使用业务模型对象在服务层上的方法安全性是可行的方法。

顺便说一句,在 Controller 中使用方法安全性,或者在休息 Controller 上使用方法安全性更糟,通常是设计味道:如果您可以在 Controller 内执行此操作,那么通常最好使用 URL 安全性。如果它看起来有意义,那么您可能已将业务逻辑导入到 Fat Ugly Controller 中。当 Controller 通常不实现接口(interface)时,不谈论使用默认 JDK 代理的 Spring AOP 实现的方法安全性。

关于java - 如果我们从配置中保护 REST API,是否有必要在 Spring 中使用方法级安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38630717/

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