java 探花交友day2 项目简介,环境搭建 登录验证码

技术方案:

java 探花交友day2 项目简介,环境搭建 登录验证码_第1张图片

 项目结构:

java 探花交友day2 项目简介,环境搭建 登录验证码_第2张图片

 java 探花交友day2 项目简介,环境搭建 登录验证码_第3张图片

项目概述

java 探花交友day2 项目简介,环境搭建 登录验证码_第4张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第5张图片

 java 探花交友day2 项目简介,环境搭建 登录验证码_第6张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第7张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第8张图片

通过接口文档(API文档)定义规范 

开发工具安装与配置

Linux虚拟机

java 探花交友day2 项目简介,环境搭建 登录验证码_第9张图片

 java 探花交友day2 项目简介,环境搭建 登录验证码_第10张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第11张图片

 java 探花交友day2 项目简介,环境搭建 登录验证码_第12张图片

 YAPI 

账号 [email protected]        密码123456

安装个安卓模拟器,然后安装APK

开发环境说明

java 探花交友day2 项目简介,环境搭建 登录验证码_第13张图片

初始工程搭建

java 探花交友day2 项目简介,环境搭建 登录验证码_第14张图片 java 探花交友day2 项目简介,环境搭建 登录验证码_第15张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第16张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第17张图片

 阿里云短信-组件抽取

 java 探花交友day2 项目简介,环境搭建 登录验证码_第18张图片

 java 探花交友day2 项目简介,环境搭建 登录验证码_第19张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第20张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第21张图片

 java 探花交友day2 项目简介,环境搭建 登录验证码_第22张图片

需求分析-表结构 

java 探花交友day2 项目简介,环境搭建 登录验证码_第23张图片

JWT-概述

 JSON Web token简称JWT, 是用于对应用程序上的用户进行身份验证的标记。也就是说, 使用 JWTS 的应用程序不再需要保存有关其用户的 cookie 或其他session数据。此特性便于可伸缩性, 同时保证应用程序的安全。

JWT-内部结构

java 探花交友day2 项目简介,环境搭建 登录验证码_第24张图片

 

JWT-鉴权流程

java 探花交友day2 项目简介,环境搭建 登录验证码_第25张图片

 

java 探花交友day2 项目简介,环境搭建 登录验证码_第26张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第27张图片 

 

java 探花交友day2 项目简介,环境搭建 登录验证码_第28张图片

 

public class JwtTest {

    @Test
    public void testCreateToken() {
        //生成token
        //1、准备数据
        Map map = new HashMap();
        map.put("id",1);
        map.put("mobile","13800138000");
        //2、使用JWT的工具类生成token
        long now = System.currentTimeMillis();
        String token = Jwts.builder()
                .signWith(SignatureAlgorithm.HS512, "itcast") //指定加密算法
                .setClaims(map) //写入数据
                .setExpiration(new Date(now + 30000)) //失效时间
                .compact();
        System.out.println(token);
    }

    //解析token

    /**
     * SignatureException : token不合法
     * ExpiredJwtException:token已过期
     */
    @Test
    public void testParseToken() {
        String token = "eyJhbGciOiJIUzUxMiJ9.eyJtb2JpbGUiOiIxMzgwMDEzODAwMCIsImlkIjoxLCJleHAiOjE2MTgzOTcxOTV9.2lQiovogL5tJa0px4NC-DW7zwHFqZuwhnL0HPAZunieGphqnMPduMZ5TtH_mxDrgfiskyAP63d8wzfwAj-MIVw";//这里的token是上一个测试方法生成的token
        try {
            Claims claims = Jwts.parser()
                    .setSigningKey("itcast")
                    .parseClaimsJws(token)
                    .getBody();
            Object id = claims.get("id");
            Object mobile = claims.get("mobile");
            System.out.println(id + "--" + mobile);
        }catch (ExpiredJwtException e) {
            System.out.println("token已过期");
        }catch (SignatureException e) {
            System.out.println("token不合法");
        }

    }
}

java 探花交友day2 项目简介,环境搭建 登录验证码_第29张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第30张图片 

 java 探花交友day2 项目简介,环境搭建 登录验证码_第31张图片

 

/**
 * 检验登录
 */
@PostMapping("/loginVerification")
public ResponseEntity loginVerification(@RequestBody Map map) {
    //1、调用map集合获取请求参数
    String phone = (String) map.get("phone");
    String code = (String) map.get("verificationCode");
    //2、调用userService完成用户登录
    Map retMap = userService.loginVerification(phone,code);
    //3、构造返回
    return ResponseEntity.ok(retMap);
}

service:

/**
 * 验证登录
 * @param phone
 * @param code
 */
public Map loginVerification(String phone, String code) {
    //1、从redis中获取下发的验证码
    String redisCode = redisTemplate.opsForValue().get("CHECK_CODE_" + phone);
    //2、对验证码进行校验(验证码是否存在,是否和输入的验证码一致)
    if(StringUtils.isEmpty(redisCode) || !redisCode.equals(code)) {
        //验证码无效
        throw new RuntimeException("验证码错误");
    }
    //3、删除redis中的验证码
    redisTemplate.delete("CHECK_CODE_" + phone);
    //4、通过手机号码查询用户
    User user = userApi.findByMobile(phone);
    boolean isNew = false;
    //5、如果用户不存在,创建用户保存到数据库中
    if(user == null) {
        user = new User();
        user.setMobile(phone);
        user.setPassword(DigestUtils.md5Hex("123456"));
        Long userId = userApi.save(user);
        user.setId(userId);
        isNew = true;
    }
    //6、通过JWT生成token(存入id和手机号码)
    Map tokenMap = new HashMap();
    tokenMap.put("id",user.getId());
    tokenMap.put("mobile",phone);
    String token = JwtUtils.getToken(tokenMap);
    //7、构造返回值
    Map retMap = new HashMap();
    retMap.put("token",token);
    retMap.put("isNew",isNew);

    return retMap;
}

用户登录代码优化

java 探花交友day2 项目简介,环境搭建 登录验证码_第32张图片

java 探花交友day2 项目简介,环境搭建 登录验证码_第33张图片 

java 探花交友day2 项目简介,环境搭建 登录验证码_第34张图片 

 

你可能感兴趣的:(探花交友项目实战,交友,微服务,java,spring,cloud,spring)