service
@Override public void register(RegisterVO registerVO) { //获取注册信息,进行校验 String nickname = registerVO.getNickname(); String mobile = registerVO.getMobile(); String password = registerVO.getPassword(); String code = registerVO.getCode(); //校验参数 if(StringUtils.isEmpty(mobile) || StringUtils.isEmpty(mobile) || StringUtils.isEmpty(password) || StringUtils.isEmpty(code)) { throw new GuliException(20001,"error"); } //校验验证码 String mobleCode = redisTemplate.opsForValue().get(mobile); if(!code.equals(mobleCode)) { throw new GuliException(20001,"error"); } //查询数据库中是否存在相同的手机号码 Integer count = baseMapper.selectCount(new QueryWrapper<UcenterMember>().eq("mobile", mobile)); if(count.intValue() > 0) { throw new GuliException(20001,"error"); } UcenterMember user = new UcenterMember(); BeanUtils.copyProperties(registerVO,user); //设置用户默认头像 user.setAvatar(UcenterMemberServiceImpl.DEFAULT_AVATOR); //密码加密 user.setPassword(MD5.encrypt(password)); baseMapper.insert(user); }
退出功能
logout() { cookie.set('guli_ucenter', '', { domain: 'localhost' }) cookie.set('guli_token', '', { domain: 'localhost' }) // 跳转页面 window.location.href = '/' }
OAuth2
OAuth2是一种特定问题的解决方案,主要解决两个问题(令牌机制,按照一定规则生成字符串,字符串包含用户的信息)
- 开放系统之间的授权问题
- 场景:lucy需要打印百度网盘的照片,所以打印招聘需要百度网盘的权限,给予权限的方式:
- lucy直接将账户名和密码给打印照片,打印照片服务去找百度网盘拿照片,缺点是不安全
- lucy给一个通用开发者key,打印照片拿着key,但是这种仅仅适用在合作伙伴之间
- 办法令牌,接近OAuthe2方式,按照自己特定的规则生成一个字符串,颁发给访问者
OAuth2误解:
- 不是一个http协议
- 并不是一个协议只是一个解决方案