用户登录及在线验证 03:用户登录代码

public Map loginVerification(String mobile, String code) {
    //1. 从Redis中获取验证码
    String redisCode = redisTemplate.opsForValue().get("CHECK_CODE_" + mobile);

    //2. 校验验证码
    if(StringUtils.isEmpty(code) || !code.equals(redisCode)) {
        throw new RuntimeException("验证码校验失败");
    }
    //比对通过 , 删除验证码
    redisTemplate.delete("CHECK_CODE_" + mobile);
    
    //3. 判断用户是否注册
    boolean isNew = false;
    User user = userApi.findByMobile(mobile);
    if (user == null) {
        user = new User();
        user.setMobile(mobile);
        user.setPassword(DigestUtils.md5Hex("123456"));
        Long id = userApi.save(user);
        user.setId(id);
        isNew = true;
    }

    //4. 登录成功, 生成token
    Map<String, Object> tokenMap = new HashMap<String, Object>();
    tokenMap.put("id", user.getId());
    tokenMap.put("mobile", mobile);
    String token = JwtUtils.getToken(tokenMap);

    //5. 封装数据返回
    Map<String, Object> result = new HashMap<>();
    result.put("token", token);
    result.put("isNew", isNew);

    return result;
}

  

posted @ 2022-04-29 10:31  twb_QAQZ  阅读(81)  评论(0)    收藏  举报