2020-10-21 16:27

@wiboson 是不是你前端还有 nginx 这类代理,挡住了客户端证书

2020-10-21 11:55

ehcache.xml 中添加相关的 cache 配置,如果不添加需要加个 default cache 才不会报错

注意看异常,已经很详细

2020-10-20 22:36

@HAIV 本身是可以的,去掉那个 UrlSeoHandler 配置即可

没有使用 detail 是因为可以让 url 短一点,搜索引擎收录的时候权重会高一点,当然,这个也是没有经过验证的一个说法,权重主要还是看内容本身

2020-10-20 17:24

@四零四 扩展 underotw 的 handler 解决一下试一试, jfinal undertow 提供了相应的扩展接口:
https://jfinal.com/share/2066

2020-10-20 17:18

代码贴全一些,没准是后面的代码有问题

2020-10-20 16:42

@四零四 既然被改掉了,是不是 undertow 已经帮你处理完了这个事,不用再操心这事了吧?

2020-10-20 16:41

最好的办法是去掉 @ControllerBind, 因为这个在打包后有问题,要改这个不会耗费太多时间,因为你的 controller 一般不会超过 30 个

还有一个办法是使用 jpress 的路由扫描代码取代 @ControllerBinid

注意,jfinal 官方并未推出路由扫描功能

2020-10-20 16:37

@四零四 我看了看 http host 头攻击的相关资料,这个一般是通过配置 nginx 解决:
https://blog.csdn.net/u012903926/article/details/81702224

根本上来说,如果你的项目中没有使用 request.getHost() 这个值,是不会有害的,如果使用了,就要防一防

在 jfinal 之下,可以通过一个 handler 来处理一下,大致办法如下:
public class HostCheckHandler extends Handler {
static String host = PropKit.get("server.host");

public void handle(String target, HttpServletRequest req, HttpServletResponse res, boolean[] isHandled) {
if ( ! host.equals(req.getHost()) ) {
RenderKit.render404(...);
} else {
next.handle(req, res, isHandled);
}
}
}

注意上面的 host 属性从配置文件中来,你需要事先配置一个 server.host,在开发的时候,你可以配置成 localhost 就可以了

注意解决后来反馈一下

2020-10-20 15:58

要对 SSL 的机制有个大概的了解,不用太深

你要解决 ssl 认证的问题,关键在于 SSLContext 的使用,SSLContext.init(...) 方法的前两个参数 init(KeyManager[] km, TrustManager[] tm),其中:
1:第一个参数是由该应用本身的证书加载而来的
2:第二个参数是该应用可以信任的客户端证书相关的文件加载而来的

我举个例子,你的 jfinal undertow 项目,默认是信任所有客户端的,所以第二个参数为 null。

当第二个参数为是 null 的时候,在客户端发起请求的时候就会根据这个参数来验证客户端是不是可以访问

2020-10-20 15:50

应该是有一个 Handler 对 url 做了转换,好让 url 能更短一些

你找找这个 Handler

此外,观察一下控制台输出的 jfinal action report,里面会显示请求的是哪个 action,这样心中有数

2020-10-20 15:47

@四零四 http host头攻击是如何实施的,有什么破坏后果,jfinal undertow 是不是天然免疫了?

异常是什么,我想了解更多信息,好解决问题

2020-10-20 15:26

这个方案极其简洁,谢谢你的分享,必赞

2020-10-20 12:42

用一下 Db.batchSave/batchUpdate 这样的 API,具体用法在这些 API 注释中有 demo,鼠标放在这些方法上会自动弹出注释来

2020-10-20 12:40

VerifyError 是在被加载的类文件验证的时候出了问题,可能是你的 .class 确实有问题,可能是文件被损坏,也有可能是依赖的第三方文件有问题

删掉本地 maven 库中的相关依赖文件所在的目录,让 mavne/gradle 重新下载文件试试

2020-10-20 12:36

分享很有用,图文并茂介绍很详细,谢谢你的分享,必赞