6.11軟工日報

笠大發表於2024-06-14

繼續學習satoken

//使用者登入方法
    @Override
    public String login(LoginDto loginDto) {
//        先檢驗驗證碼
        String codeRedis = redisTemplate.opsForValue().get(loginDto.getCodeKey());
        if (codeRedis==null){
            throw new ResultException(555,"驗證碼不存在");
        }
        if (!codeRedis.equals(loginDto.getCodeValue().toLowerCase())) {
            throw new ResultException(555, "驗證碼錯誤");
        }
//        驗證碼正確,刪除redis中的驗證碼
        redisTemplate.delete(loginDto.getCodeKey());
//        使用者登入
        User sysUser = this.getOne(new LambdaQueryWrapper<User>().eq(User::getUsername, loginDto.getUsername()));
        if(sysUser==null){
            throw new ResultException(555,"使用者不存在");
        }
 
        String md5 = SaSecureUtil.md5(loginDto.getPassword());
        if (!md5.equals(sysUser.getPassword())){
            throw new ResultException(555,"密碼錯誤");
        }
        //根據使用者id登入,第1步,先登入上
        StpUtil.login(sysUser.getId());
        // 第2步,獲取 Token  相關引數
        SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
        // 第3步,返回給前端
        return tokenInfo.getTokenValue();
    }