问题描述
使用spring-data, @RepositoryRestResource
允许我对给定的@Entity
类执行CRUD操作。
一切都很神奇,但是我该如何添加安全层以防止有人拨打插入URL数百万次?
1楼
看来,此问题并非特定于Spring Data REST。 如果您有任何允许将数据添加到数据库的公共接口,那么您将遇到相同的问题。
但是,关于Spring Data REST,(至少)有两种可能性:
不要导出save(T)
方法
使用@RestResource(exported = false)
可以防止Spring Data REST完全导出某些方法:
@RepositoryRestResource(path = "people", rel = "people")
interface PersonRepository extends CrudRepository<Person, Long> {
@Override
@RestResource(exported = false)
void save(Person person);
}
您仍然可以在代码中使用save(T)
方法,但无法通过REST使用。
有关更多详细信息,请参见 。
使用Spring Security保护您的应用程序
要求用户登录后才能保存数据。 Spring Data REST提供了一个示例,展示了如何通过Spring Security以多种方式保护Spring Data REST应用程序: