Token

一、项目中的Token

主要用做身份验证。

1、点击忘记密码之后,检验用户名是否存在

2、存在则根据用户名查询问题

3、回答答案正确的话生产Token,并将其放到guava cache本地缓存中

4、将Token返回给客户端 

public ServerResponse<String> checkAnswer(String username,String question,String answer){
    int resultCount = userMapper.checkAnswer(username,question,answer);
    if(resultCount > 0){       //说明问题及问题答案是这个用户的,并且是正确的
        String forgetToken = UUID.randomUUID().toString();       //声明一个token
        TokenCache.setKey(TokenCache.TOKEN_PREFIX + username,forgetToken);
        return ServerResponse.createBySuccess(forgetToken);
    }
    return ServerResponse.createByErrorMessage("问题的答案错误");
}

重置密码的时候需要携带Token:

//忘记密码中的重置密码
public ServerResponse<String> forgetResetPassword(String username,String passwordNew,String forgetToken) {
    if (org.apache.commons.lang3.StringUtils.isBlank(forgetToken))      //先判断是否携带了token
        return ServerResponse.createByErrorMessage("参数错误,token需要传递");
    ServerResponse validResponse = this.checkValid(username, Const.USERNAME);
    if (validResponse.isSuccess())           //校验一下用户名
        return ServerResponse.createByErrorMessage("用户不存在");
    String token = TokenCache.getKey(TokenCache.TOKEN_PREFIX + username);   //从缓存中获取用户的token
    if (org.apache.commons.lang3.StringUtils.isBlank(token))                //获取到看token是否为空
        return ServerResponse.createByErrorMessage("token无效或者过期");
    if (org.apache.commons.lang3.StringUtils.equals(forgetToken, token)) {         //比较token是否相等
            String md5Password = MD5Util.MD5EncodeUtf8(passwordNew);
            int rowCount = userMapper.updatePasswordByUsername(username, md5Password);  //更新密码
            if (rowCount > 0)  //如果个数大于1,则更新密码成功
                return ServerResponse.createBySuccessMessage("修改密码成功");
    }else {
            return ServerResponse.createByErrorMessage("token错误,请重新获取重置密码的token");
    }
    return ServerResponse.createByErrorMessage("修改密码失败");
}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值