我对spring-hateoas或Spring Rest Data中关于加密资源/实体ID的标准模式或机制有疑问。
我问的原因是,对我们项目的要求是我们不会将对象的ID传递给外界,并且不应将它们用作GET请求作为参数。
我知道,Spring Rest Data和spring-hateoas不会给出对象的id,除非它们是这样配置的,但即便如此,我也能看到链接中的id。
我知道我可以使用PropertyEditors或转换器在Json序列化/ deseritalisation之前和之后加密/解密id但我只是想知道有更标准的方法吗?
感谢答案......
答案 0 :(得分:1)
如果您拥有独特的商家ID'您的资源属性可以configure SDR使用它而不是实体ID。
首先,您必须使用以下唯一属性创建实体的查找方法:
public interface MyEntityRepo extends JpaRepository<MyEntity, Long> {
@RestResource(exported = false)
Optional<CatalogResource> findByMyUniqueProperty(String myUniqueProperty);
}
然后用它来配置SDR:
@Component
public class DataRestConfig extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.withCustomEntityLookup()
.forRepository(MyEntityRepo.class, MyEntity::getMyUniqueProperty, MyEntityRepo::findByMyUniqueProperty);
super.configureRepositoryRestConfiguration(config);
}
}
在此自定义之后,您将拥有如下资源URI:
http://localhost:8080/myEntities/myUniquePropertyValue1