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

SpringBootRest忽略一个类

湛安宁
2023-03-14

我正在开发一个REST API,使用Spring Boot启动数据Rest。我想与JPA同步的一个类是User类,其中包含有关用户的信息,包括谁被允许访问API。

不幸的是,拥有用户和UserRepository意味着我的用户类在API中公开。我能够删除Id(在configureRepositoryRestConfiguration函数中)、用户名和密码(通过向我的用户类的每个变量添加@JsonIgnore)。

不幸的是,API的用户仍然可以请求用户表(返回一个空用户列表)。虽然这不是真正的问题,但我宁愿删除 /usersendpoint。

无法将@JsonIgnore添加到整个用户类中。

共有3个答案

长孙景天
2023-03-14

有投影这种东西。

您可以使用所需字段定义接口,并将其用作存储库的方法:

@Projection(name = "simpleUser", types = { User.class }) 
interface SimpleUser { 

  String getFirstName(); 

  String getLastName(); 
}
穆阳嘉
2023-03-14

您可以通过将此注释添加到存储库来隐藏某些存储库:@RepositoryRestResources(导出=false)

更多信息请点击此处:http://docs.spring.io/spring-data/rest/docs/current/reference/html/#customizing-特别提款权。隐藏存储库

夹谷志
2023-03-14

导出存储库依赖于RepositoryDettionStrategy。默认策略是:

公开所有公共存储库接口,但考虑@(存储库)RestResources的导出的标志。

根据禁用“回购”的导出,您可以为此回购设置exported标志为false

@RepositoryRestResource(exported = false)
public interface UserRepo extends JpaRepository<User, Integer> {
    //...
}

另一种方法是将RepositoryDetectionStrategy全局更改为带注释的:

只有使用@(Repository)RestResource注释的存储库才会公开,除非其导出标志设置为false。

@Configuration
public class RestConfig extends RepositoryRestConfigurerAdapter {
    @Override
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.setRepositoryDetectionStrategy(RepositoryDetectionStrategy.RepositoryDetectionStrategies.ANNOTATED);
        super.configureRepositoryRestConfiguration(config);
    }
}

然后不要将@RepositoryRestResource注释应用于不需要导出的repos。

使现代化

我们还可以使用此应用程序属性设置策略:

spring.data.rest.detection-strategy=default

来源

 类似资料:
  • 问题内容: 我正在开发一个使用Spring-boot,关系数据库和Elasticsearch的应用程序。 我在代码的2个不同位置使用JSON序列化: 在REST API的响应中。 当代码与Elasticsearch交互时。 我在Elasticsearch中需要一些属性,但我想向应用程序用户隐藏(例如,来自关系数据库的内部ID)。 这是一个实体的例子: 问题 :当对象持久化在Elasticsearc

  • 我构建了一个REST服务,发现使用Gson从ObjectId生成的JSON字符串的格式与Spring-Boot生成的格式不同。如果我以GSON格式将现有文档的_id字段的ObjectId发送到REST服务,并使用MongoRepository的save函数将其保存到集合中,即使在这样的字段上设置了唯一的索引,仍会插入具有duplicated_id的新文档。但是,如果我以spring-boot生成的

  • 问题内容: 我正在某个网站上插入一些标题中的换行符。假设我无法编辑源HTML,是否有CSS可以忽略这些中断的方法? 我正在移动网站的优化,所以我真的不想使用JavaScript。 问题答案: 使用css,您可以“隐藏” br标签,它们不会起作用: 如果只想在特定的标题类型中隐藏某些内容,只需使CSS更具体即可。

  • 我有一个实体: 存储库: 应引发异常的测试: 然而,测试失败。实体不会引发所需的异常。注释适用于字符串,但不适用于整数。 MyEntity的自动生成表: 更新 当我将 指定到 字段时,一切正常。但是,我希望能够将自己的值分配给主键字段。 更新2 更新的实体(存储库也已更新以反映更改): MyEntity的自动生成表:

  • 问题内容: 这是我的实体: 这是我获得人员名单的方式: 如果我正确理解提取图,则它必须仅加载我指定的那些字段。但是,字段“ birthDate”也已加载。此外,我看到在hibernateSQL查询中选择了4列。 如何解决?我使用hibernate 5.1.0作为JPA提供程序。 问题答案: 实体图旨在控制延迟或渴望加载哪些关系(例如,一对一,一对多等)。它们可能不适用于加载各个列(取决于提供程序)

  • 由于某些原因,我无法将CURL与HTTPS一起使用。在我升级curl库之前,一切都很正常。现在,我在尝试执行CURL请求时遇到了这种响应:SSL CA证书(路径?访问权限?)有问题 以下是关于相关问题的建议,我试图做到以下几点: > 启用并指向从http://curl.haxx.se/docs/caextract.html下载的cacert.pem 我也试着用positiveSSL做同样的事情。c