用户微服务开发之登录模块逻辑和解密

DBC 1.6K 0
放出关键代码——UserController
/**
     * 用户登录
     * @return
     */
    @ApiOperation("用户登录")
    @PostMapping("login")
    public JsonData login(@ApiParam("用户登录对象") @RequestBody UserLoginRequest userLoginRequest){

        JsonData jsonData = userService.login(userLoginRequest);

        return jsonData;
    }
UserService
   /**
     * 用户登录
     * @param userLoginRequest
     * @return
     */
    JsonData login(UserLoginRequest userLoginRequest);
UserLoginRequest
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;


@Data
@ApiModel(value = "登录对象",description = "用户登录请求对象")
public class UserLoginRequest {



    @ApiModelProperty(value = "邮箱", example = "794666918@qq.com")
    private String mail;

    @ApiModelProperty(value = "密码", example = "123456")
    private String pwd;


}
UserServiceImpl

    /**
     * 用户注册,初始化福利信息 TODO
     * @param userDO
     */
    private void userRegisterInitTask(UserDO userDO){

    }
    /**
     * 1、根据Mail去找有没这记录
     * 2、有的话,则用秘钥+用户传递的明文密码,进行加密,再和数据库的密文进行匹配
     *
     * @param userLoginRequest
     * @return
     */
    @Override
    public JsonData login(UserLoginRequest userLoginRequest) {

        List<UserDO> userDOList =  userMapper.selectList(new QueryWrapper<UserDO>().eq("mail",userLoginRequest.getMail()));

        if(userDOList!=null && userDOList.size()==1){
            //已经注册
            UserDO userDO = userDOList.get(0);
            String cryptPwd = Md5Crypt.md5Crypt(userLoginRequest.getPwd().getBytes(),userDO.getSecret());
            if(cryptPwd.equals(userDO.getPwd())){
                //登录成功,生成token TODO

                return null;
            }else {

                return JsonData.buildResult(BizCodeEnum.ACCOUNT_PWD_ERROR);
            }
        }else {
            //未注册
            return JsonData.buildResult(BizCodeEnum.ACCOUNT_UNREGISTER);
        }


    }
温馨提示

整体流程就是,用户登录的密码,通过数据库中的盐进行重新加解密,从而实现密码的校验,后台看不到你的密码!

发表评论 取消回复
表情 图片 链接 代码

分享