使用spring-data,@RepositoryRestResource
允许我对给定的@Entity
类执行CRUD操作。一切都令人印象深刻但我怎么能添加一个安全层来阻止任何人拨打一百万倍的插入URL?
答案 0 :(得分:2)
看来,这个问题并不是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获得。有关详细信息,请参阅the reference documentation。
要求用户在允许用户保存数据之前登录。 Spring Data REST提供了一个示例,演示了如何使用Spring Security以多种方式保护Spring Data REST应用程序:Spring Data REST + Spring Security