2019-04-21 10:02
这个问题挺大的,jfinal weixin 早期版本是我写的这个函数,是一定有排序的,我记得非常清楚,以下是早期版本的代码:
public boolean checkSignature(String signature, String timestamp, String nonce) {
String TOKEN = ApiConfigKit.getApiConfig().getToken();
String array[] = {TOKEN, timestamp, nonce};
Arrays.sort(array);
String tempStr = new StringBuilder().append(array[0] + array[1] + array[2]).toString();
tempStr = HashKit.sha1(tempStr);
return tempStr.equalsIgnoreCase(signature);
}
在 git 上也可以看到直到最新版本 jfinal weixin 2.3 的时候还有排序这个:
https://gitee.com/jfinal/jfinal-weixin/blob/jfinal-weixin-2.3/src/main/java/com/jfinal/weixin/sdk/kit/SignatureCheckKit.java
排查了一下,没有排序的版本是在 18 天前被改掉的:
https://gitee.com/jfinal/jfinal-weixin/commit/c4f4c3aea5e3cc3e635229e8f34e93d1c3763cae
幸好 maven 中心库的最新版本仍然是有排序的,建议使用 maven 中心库的版本
非常感谢你的发现,否则下个版本会出大问题
2019-04-21 09:45
@zhuzhuAAA 下载本站首页的 jfinal demo for maven,里头有一个生成器的 demo , 改改输出目录用上就好
生成出来的类,既包括 Model 也包括 Vo 层
2019-04-20 10:50
@西门吹牛 Permission denied 与 jfinal 以及 undertow 肯定是无关的,找找别的原因
2019-04-20 00:33
@西门吹牛 mac 上默认不让用 80 端口,改成超过 1024 的端口号即可
或者百度搜索: mac 开启 80 端口
2019-04-20 00:29
你的代码 DbKit.getConfig("sql2000").getConnection() 是自己获取了 Connection 对象,所以需要在 finally 块中关闭它,否则死掉是迟早的事
要这样:
try {
...
}
finally {
DbKit.getConfig("sql2000").close(conn);
}
如果你是通过 DbKit.getConfig(...).getDataSource().getConnection() 获取到的数据源,可以这样来关闭:
try {
...
}
finally {
conn.close();
}
优先使用第一种获取 connection 对象
2019-04-20 00:16
@zeroabc 使用下面的用法:
engine.addSharedObject("Account", new Account());
用的时候这样:
#(Account.STATUS_LOCK_ID)
一行代码,全局通用,简洁方便