当前位置: 首页 > 知识库问答 >
问题:

Spring仇恨或SpringRest数据中的 ID 加密

燕扬
2023-03-14

我有一个关于spring hateoas或spring Rest Data中加密资源/实体ID的标准模式或机制的问题。

我问的原因是,我们项目的一个要求是我们不将对象的id传递给外部世界,并且它们不应该在GET请求中用作参数。

我知道,Spring Rest数据和spring-hateoas不会给出对象的id,除非它们被配置成这样,但即使这样,我也可以在链接中看到id。

我知道我可以使用属性编辑器或转换器在Json序列化/去实例化之前和之后加密/解密ID,但我只想知道有没有更标准的方法?

谢谢答案...

共有1个答案

祖浩淼
2023-03-14

如果您具有资源的唯一“业务 ID”属性,则可以将 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
 类似资料:
  • 我正在测试SpringREST服务,特别是POST方法 以下是我的控制器的代码片段: 员工类别: 我在pom.xml中也包含了jackson库的依赖 pom.xml 当我提交请求时,我的状态为:415不支持的媒体类型 这是我收到的错误消息:服务器拒绝了此请求,因为请求实体的格式不受请求方法的请求资源的支持。 请说明我做错了什么?

  • 我正在研究如何在web服务器上加密选定的用户数据字段,并希望得到关于如何实现最佳结果的建议。举个例子,假设用户输入他/她的名字、姓氏、电子邮件和社会安全号;而且: 管理员需要能够查看此信息。 服务器上的进程需要使用该信息 ...但万一数据库(或备份)被盗,那么信息就会被加密而无用。 我想,一种方法是生成一个私有+公钥,将其存储到Windows证书存储中,将其标记为不可导出(当然保留备份),然后在应

  • 我在spring数据中使用了版本注释,所以我有一个父实体,它有子实体列表。当我从子列表中删除元素时,父版本不会增加。有人能为我澄清一下这个版本的替代方案吗, 为什么这种情况下的转换没有增加,这是管理版本控制的好方法还是我应该使用转换“锁”。 在文档中,我读到版本仅在更新数据库中的一行时更新,但在我的情况下,我将版本放在父实体上,我希望 注意:我在网上搜索了很多,但我没有找到一个明确的解决方案,任何

  • 我做了一个实验...两个Spring数据存储库的一个公共实体:-jpa-mongoDB 首先,我使用以下库版本: 发布spring-data-jpa:1.7.0.发布spring-data-mongodb:1.6.0.发布 我觉得这是个很普通的案子。为什么Spring数据不能生成一样长的实体id?太奇怪了。

  • 我使用的是spring boot starter数据elasticsearch(2.3.0版本),它使用的是spring数据elasticsearch(4.0.0版本)。 官方文档显示了ElasticsearchRestTemplate和ElasticsearchRepository的用法。为文档编制索引的推荐方法是什么? 这里也有一个类似的问题,但已经有5年多了。

  • MySQL、Oracle、PostgreSQL、SQL Server、MariaDB、MongoDB 在“数据库”选项卡中,你可以设置连接到服务器时导航窗格显示哪些数据库。这设置不是强制的。若要设置自定义数据库设置,请勾选“使用自定义数据库列表”。然后,从“数据库”列勾选要显示的数据库。如果你想连接时 Navicat 自动打开数据库,勾选“自动打开”框。 添加一个隐藏的数据库到列表 点击“添加数据