david 2 лет назад
Родитель
Сommit
02203e376b

+ 7 - 2
src/main/java/com/roma/romaapi/controller/ApiController.java

@@ -1,9 +1,11 @@
 package com.roma.romaapi.controller;
 
 
+import com.roma.romaapi.service.ApiService;
 import com.roma.romaapi.service.CaptchaService;
 import com.roma.romaapi.utils.CustomResponse;
 import com.roma.romaapi.utils.UUIDUtil;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -26,6 +28,8 @@ public class ApiController {
     @Autowired
     CaptchaService captchaService;
     @Autowired
+    ApiService apiService;
+    @Autowired
     private UUIDUtil uuidUtil;
     @Autowired
     private RedisTemplate<String, String> redisTemplate;
@@ -37,8 +41,9 @@ public class ApiController {
 
     // 登录系统
     @RequestMapping("/api/login")
-    public Map login(){
-
+    public Map login(HttpServletRequest request){
+        Map<String, String[]> maps = request.getParameterMap();
+        apiService.login(maps);
         Map ret = new HashMap();
         String key = uuidUtil.getUUID32();
         ret.put("token", key);

+ 32 - 0
src/main/java/com/roma/romaapi/dao/ApiDao.java

@@ -0,0 +1,32 @@
+package com.roma.romaapi.dao;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.EmptyResultDataAccessException;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Repository
+public class ApiDao {
+    @Autowired
+    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
+
+    // 通过code,获取要执行的sql
+    public Map<String, Object> adminInfoQueryForMap(String adminName) {
+        try {
+            Map<String, Object> paramMap = new HashMap<>();
+            paramMap.put("admin_name", adminName);
+            Map<String, Object> resMap2 = namedParameterJdbcTemplate.queryForMap(
+                    "SELECT * FROM `admin_user` where admin_name = :admin_name AND is_enable=1", paramMap);
+            return  resMap2;
+        } catch (EmptyResultDataAccessException e) {
+            Map<String, Object> resultMap = new HashMap<>();
+            resultMap.put("sysErrorCode", "500");
+
+            return resultMap;
+        }
+    }
+}

+ 1 - 0
src/main/java/com/roma/romaapi/interceptor/JWTInterceptor.java

@@ -51,6 +51,7 @@ public class JWTInterceptor implements HandlerInterceptor {
             // 得到签名中的登录时间
             String loginTimeFromToken = verify.getClaim("userLoginTime").asString();
 
+            System.out.println("token-----"+loginTimeFromToken);
             log.info("token:" + loginTimeFromToken);
 
             // 从Redis中获取用户的信息

+ 51 - 0
src/main/java/com/roma/romaapi/service/ApiService.java

@@ -0,0 +1,51 @@
+package com.roma.romaapi.service;
+
+import com.roma.romaapi.dao.ApiDao;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class ApiService {
+
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+    @Autowired
+    private ApiDao apiDao;
+    // 登录方法
+    public Map<String, Object> login(Map<String, String[]> maps) {
+        // 请求参数,获取验证码,验证码token,用户名,密码
+        String userName = maps.get("api_name")[0]; // 用户名
+        String password = maps.get("api_password")[0]; // 密码
+        String captcha = maps.get("api_captcha")[0]; // 用户输入验证码
+        String captchaToken = maps.get("captchaToken")[0]; // 验证码token,获取验证码的值
+        String captchaTokenValue = redisTemplate.opsForValue().get(captchaToken); // 缓存中验证码的值
+        if(!Boolean.TRUE.equals(redisTemplate.hasKey(captchaToken)) || captchaTokenValue!=captcha){
+            // 验证码验证失败
+        }
+        // 判断是否存在此用户,用户密码是否正确
+        Map UserInfo = apiDao.adminInfoQueryForMap(userName);
+        if(UserInfo.containsKey("sysErrorCode")) {
+            // 如果没查到用户信息,则报错
+        }
+        Object userPassword = UserInfo.get("admin_password");
+        String stringPassword = userPassword.toString();
+
+        if(!password.equals(stringPassword)) {
+            // 校验密码是否正确 密码不正确,返回错误
+        }
+
+//        System.out.println(password);
+        System.out.println(captcha);
+//        System.out.println(captchaToken);
+        Map<String, Object> map = new HashMap<>();
+        map.put("token", 1);
+
+        return map;
+    }
+}

+ 1 - 2
src/main/java/com/roma/romaapi/service/CaptchaService.java

@@ -34,8 +34,7 @@ public class CaptchaService {
         //生成一个token
         String key = uuidUtil.getUUID32();
         //生成验证码对应的token  以token为key  验证码为value存在redis中
-        ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
-        valueOperations.set(key, captcha);
+        redisTemplate.opsForValue().set(key, captcha);
         //设置验证码过期时间
         redisTemplate.expire(key, timeout, TimeUnit.MINUTES);
         Map<String, Object> map = new HashMap<>();

+ 1 - 1
src/main/java/com/roma/romaapi/utils/JWTUtil.java

@@ -30,7 +30,7 @@ public class JWTUtil {
     public static final String SIGN = "JWT_SIGN_";
 
     // 加盐
-    private static final String SECRET = "lou123321!!!";
+    private static final String SECRET = "rd!rew231sods4df?m2wsa";
 
     @Autowired
     StringRedisTemplate stringRedisTemplate;