|
@@ -4,6 +4,7 @@ import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.extension.api.R;
|
|
|
import com.pj.current.config.SystemObject;
|
|
|
import com.pj.project4sp.admin.SpAdmin;
|
|
|
import com.pj.project4sp.admin.SpAdminUtil;
|
|
@@ -14,11 +15,19 @@ import com.pj.utils.sg.AjaxError;
|
|
|
import com.pj.utils.sg.AjaxJson;
|
|
|
import com.pj.utils.sg.NbUtil;
|
|
|
import com.pj.utils.so.SoMap;
|
|
|
+import com.wf.captcha.SpecCaptcha;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.UUID;
|
|
|
|
|
|
/**
|
|
|
* admin账号相关的接口
|
|
@@ -27,6 +36,7 @@ import javax.servlet.http.HttpServletRequest;
|
|
|
*/
|
|
|
@RestController
|
|
|
@RequestMapping("/AccAdmin/")
|
|
|
+@Slf4j
|
|
|
public class SpAccAdminController {
|
|
|
|
|
|
|
|
@@ -41,21 +51,45 @@ public class SpAccAdminController {
|
|
|
* 账号、密码登录
|
|
|
*/
|
|
|
@RequestMapping("doLogin")
|
|
|
- AjaxJson doLogin(String key, String password) {
|
|
|
+ AjaxJson doLogin(String key, String password, String code, String verCode) {
|
|
|
// 1、验证参数
|
|
|
if (NbUtil.isOneNull(key, password)) {
|
|
|
return AjaxJson.getError("请提供key与password参数");
|
|
|
}
|
|
|
+ if (NbUtil.isOneNull(verCode, code)) {
|
|
|
+ return AjaxJson.getError("请输入验证码");
|
|
|
+ }
|
|
|
+ String cacheCode = RedisUtil.get(code);
|
|
|
+ if (NbUtil.isNull(cacheCode)) {
|
|
|
+ return AjaxJson.getError("验证码已过期");
|
|
|
+ }
|
|
|
+ if (!StrUtil.equals(cacheCode.toUpperCase(), verCode.toUpperCase())) {
|
|
|
+ return AjaxJson.getError("验证码不正确");
|
|
|
+ }
|
|
|
+ RedisUtil.del(code);
|
|
|
return spAccAdminService.doLogin(key, password);
|
|
|
}
|
|
|
|
|
|
+ @PostMapping("captcha")
|
|
|
+ public AjaxJson render() {
|
|
|
+ SpecCaptcha captcha = new SpecCaptcha(120, 45, 5);
|
|
|
+ String key = UUID.randomUUID().toString();
|
|
|
+ String verCode = captcha.text().toLowerCase(); // 获取验证码的字符
|
|
|
+ log.info("验证码 Key:{} Vercode:{}", key, verCode);
|
|
|
+ RedisUtil.setBySECONDS(key, verCode, 60);
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ map.put("key", key);
|
|
|
+ map.put("image", captcha.toBase64());
|
|
|
+ return AjaxJson.getSuccessData(map);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@RequestMapping("checkTimeout")
|
|
|
AjaxJson checkTimeout() {
|
|
|
- if (!StpUtil.isLogin()){
|
|
|
+ if (!StpUtil.isLogin()) {
|
|
|
return AjaxJson.getSuccess();
|
|
|
}
|
|
|
- String key=StpUtil.getLoginIdAsString();
|
|
|
+ String key = StpUtil.getLoginIdAsString();
|
|
|
String time = RedisUtil.get(key);
|
|
|
String now = DateUtil.now();
|
|
|
if (StrUtil.isEmpty(time)) {
|
|
@@ -63,7 +97,7 @@ public class SpAccAdminController {
|
|
|
}
|
|
|
long min = DateUtil.between(DateUtil.parseDateTime(time), DateUtil.parseDateTime(now), DateUnit.MINUTE);
|
|
|
if (min > SystemObject.config.getLoginOutMinute()) {
|
|
|
- return AjaxJson.getError("操作超时",405);
|
|
|
+ return AjaxJson.getError("操作超时", 405);
|
|
|
}
|
|
|
return AjaxJson.getSuccess();
|
|
|
}
|