VerifyCodeController.java
2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.jflyfox.api.controller;
import com.jfinal.kit.PathKit;
import com.jflyfox.api.form.ApiResp;
import com.jflyfox.api.service.ApiCache;
import com.jflyfox.api.util.VerifyImageUtil;
import com.jflyfox.component.base.BaseProjectController;
import com.jflyfox.jfinal.component.annotation.ControllerBind;
import java.io.File;
import java.util.*;
/**
* 滑动验证码控制器
*
* @author likai
* @date Created in 2020/6/12 9:54
*/
@ControllerBind(controllerKey = "/api/verify_code")
public class VerifyCodeController extends BaseProjectController {
private static final Long IMG_CACHE_EX_TIME = 120L;
private static final String TEMP_IMG_PATH = "/image/verify_code";
public void get() {
// new ApiResp().setData()
renderJson();
}
/**
* 获取文件路径
*
* @param path 文件地址
* @return
*/
public List<File> queryFileList(String path) {
File file = new File(PathKit.getWebRootPath() + TEMP_IMG_PATH);
File[] files = file.listFiles();
return Arrays.asList(files);
}
/**
* 获取滑动图片
*/
public void getImageVerifyCode() {
// 读取图库目录
List<File> tempimgList = queryFileList(TEMP_IMG_PATH);
File tempImgFile = tempimgList.get(new Random().nextInt(tempimgList.size()));
// 根据模板裁剪图片
Map<String, Object> resultMap = new HashMap<>();
try {
VerifyImageUtil.createImage(tempImgFile, resultMap);
} catch (Exception e) {
e.printStackTrace();
}
int xWidth = (int) resultMap.get("xWidth");
// sessionId 为key,value滑动距离X轴,缓存120秒
String checkMoveId = UUID.randomUUID().toString().replaceAll("-", "");
ApiCache.addCache(checkMoveId, xWidth, IMG_CACHE_EX_TIME);
// 移除map的滑动距离,不返回给前端
resultMap.remove("xWidth");
resultMap.put("checkMoveId", checkMoveId);
renderJson(new ApiResp().setData(resultMap));
}
}