小编Blo*_*lex的帖子

OpenAPI 生成器可使用 Spring 进行分页

我希望 OpenAPI 生成器(https://github.com/OpenAPITools/openapi-generator)能够根据 Spring Boot Data 中的实现在 API 中生成 Pageable 参数。我一直在尝试寻找一种合适的开箱即用的解决方案,但找不到。

理想情况下,此 Pageable 参数应仅按以下方式添加到 GET 方法:

default ResponseEntity<User> getUser(@ApiParam(value = "value",required=true) @PathVariable("id") Long id, **Pageable pageable**)
Run Code Online (Sandbox Code Playgroud)

因此,在我的控制器中实现此接口后,我需要重写它并具有上述的 Pageable 参数。我不想有单独的大小或页面参数,这里只有这个可分页。

感谢您的任何提示和帮助!

java spring code-generation openapi openapi-generator

13
推荐指数
1
解决办法
2万
查看次数

Web应用安全架构

我有一个Java Spring驱动的REST API服务器连接PostgreSQL数据库和一个Java的Spring Web服务器,它使用JavaScript(现在是浏览器,但将来也是移动应用程序)从REST API提供内容到客户端.

我已经阅读了许多文章和主题如何保护REST API,但我还没有做出最终决定.我不想拥有基本授权,因为它没有意义,因为我需要在JavaScript中存储凭据,任何进入网页和开发者控制台的人都可以轻松访问和阅读.我不想向最终用户显示任何凭据,因此我无法将它们保留在客户端.

我已经阅读了很多关于JWT的内容并且差不多决定实现它,但我听说它有一些缺点,并且从那时起就不那么肯定,如果它是我想选择的选项.我知道还有oAuth 1.0或oAuth 2.0,但我不知道我是否想要这么复杂的东西.我还希望将散列的用户凭据存储在我自己的数据库中,以便不依赖于社交媒体或Google等任何其他凭据提供程序.

现在我在我的Web服务器上创建另一个层作为代理,希望它允许我使用Spring Security在这个代理级别上验证用户并使用某种类型或cookie或某些东西进行身份验证,但我不确定它是否是可行的方式,它增加了响应时间,增加了复杂性,需要我为这些端点编写控制器方法.我的架构现在如下:

客户端(浏览器) - > Webserver - > REST API服务器 - > db

我还拒绝了所有外部连接,只允许localhost访问tomcat级别的REST API,因此我必须只在Web服务器上实现安全级别,允许在Web服务器和REST API之间进行免费信息传输,因为它无法访问无论如何.

Web服务器和REST API与Tomcat实例运行在同一服务器上.

我也不太确定这种架构是否允许我通过Web服务器验证移动应用客户端.

我非常感谢你在这件事上给我的任何建议.我在安全方面不是很有经验,所以我有点迷失了我应该做的事情.这种架构是否有任何意义,或者我是否应该直接从任何类型的客户端询问REST API,无论是来自不同IP的网页还是移动应用程序,只有安全的Rest API?如果我想保护我的网页的某些子页面或移动应用程序的某些部分应该是一个完全不同的层?

谢谢您的帮助.

java security rest spring tomcat

5
推荐指数
1
解决办法
162
查看次数

没有使用 Hibernate API 为该名称定义查询

我正在使用 Hibernate 5.2.1.Final 和 SQLite(驱动程序:Xerial 3.11.8.2)和 Maven 开发应用程序。问题是,Hibernate 找不到我的命名查询(位于提供@Entity (javax.persistence.Entity) 注释的实体中。到目前为止,我已经到处寻找解决方案,但我无法这行得通。

我最近切换到 Hibernate API 而不是使用 JPA API - 我之前没有遇到任何问题,而且我没有对这个命名查询进行任何修改。就我而言,我仍然可以使用 javax.persistence 注释。

我得到的例外:

 Caused by: java.lang.IllegalArgumentException: No query defined for that name [SugerowanaPozycja.getByCategory]
    at org.hibernate.internal.AbstractSharedSessionContract.getNamedQuery(AbstractSharedSessionContract.java:546)
    at org.hibernate.internal.AbstractSharedSessionContract.getNamedQuery(AbstractSharedSessionContract.java:101)
    at pl.nombritech.Menual.dao.SugerowanaPozycjaDAO.getByKategoria(SugerowanaPozycjaDAO.java:90)
    at pl.nombritech.Menual.view.GlowneOknoController.uzupelnijSugerowanePozycje(GlowneOknoController.java:227)
    at pl.nombritech.Menual.view.GlowneOknoController.initialize(GlowneOknoController.java:210)
    ... 22 more
Run Code Online (Sandbox Code Playgroud)

我的实体类中的注释:

import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

    @Entity
    @NamedQueries({ 
    @NamedQuery(name = "SugerowanaPozycja.getByCategory",
    query = "SELECT e FROM SugerowanaPozycja e WHERE e.kategoria = :kategoria")
    })
Run Code Online (Sandbox Code Playgroud)

这就是异常发生的地方:

public static ObservableList<SugerowanaPozycja> getByKategoria(String kategoria)
{
    Session session = Main.SESSION_FACTORY.openSession(); …
Run Code Online (Sandbox Code Playgroud)

java hibernate maven

1
推荐指数
1
解决办法
1万
查看次数