如何防止从我的MongoRepository导出某些HTTP方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止从我的MongoRepository导出某些HTTP方法?相关的知识,希望对你有一定的参考价值。
我正在使用spring-data-rest,我有一个像这样的MongoRepository:
@RepositoryRestResource
interface MyEntityRepository extends MongoRepository<MyEntity, String> {
}
我想允许GET方法,但禁用PUT,POST,PATCH和DELETE(只读Web服务)。
@RepositoryRestResource
interface MyEntityRepository extends MongoRepository<MyEntity, String> {
@Override
@RestResource(exported = false)
public MyEntity save(MyEntity s);
@Override
@RestResource(exported = false)
public void delete(String id);
@Override
@RestResource(exported = false)
public void delete(MyEntity t);
}
它似乎不起作用,因为我仍然可以执行PUT,POST,PATCH和DELETE请求。
答案
感谢Oliver,以下是覆盖的方法:
@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends MongoRepository<Person, String> {
// Prevents GET /people/:id
@Override
@RestResource(exported = false)
public Person findOne(String id);
// Prevents GET /people
@Override
@RestResource(exported = false)
public Page<Person> findAll(Pageable pageable);
// Prevents POST /people and PATCH /people/:id
@Override
@RestResource(exported = false)
public Person save(Person s);
// Prevents DELETE /people/:id
@Override
@RestResource(exported = false)
public void delete(Person t);
}
另一答案
这是迟到的回复,但如果您需要阻止实体的全局http方法,请尝试它。
@Configuration
public class DataRestConfig implements RepositoryRestConfigurer {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.getExposureConfiguration()
.forDomainType(Person.class)
.withItemExposure(((metdata, httpMethods) -> httpMethods.disable(HttpMethod.PUT, HttpMethod.POST, ... )))
.withCollectionExposure((metdata, httpMethods) -> httpMethods.disable(HttpMethod.PUT, HttpMethod.POST, ...));
}
}
以上是关于如何防止从我的MongoRepository导出某些HTTP方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止从我的角度站点直接访问 bootstrap.min.js?
MS SQL Server - 如何将所有存储过程从我的机器导出到我的朋友机器?
MySql,如何将索引从我的开发数据库导出到我的生产数据库?