一.注册
一.短信验证码服务
登录阿里云
选择:产品分类 -> 云通信 -> 短信服务 -> 管理控制台 -> 新手引导
申请国内短信签名
申请国内短信模板
选择AccessKey,创建AccessKey
选择OpenAPI Explorer,填写SendSms中的必要信息,测试短信发送功能
切换到Node.js示例代码,复制代码已备后用
二.封装短信发送验证码
1.安装randomnumber模块
npm install randomnumber -S
2.引入并使用
const randomnum = require(“randomnumber”)
randomnum.generate(4)//表示生成几位的随机数
3.创建tools文件,将阿里短信验证码发送实例代码,封装到发送短信功能,及随机数生成。处理参数,处理异步
tools/index.js
三、注册的业务逻辑
用户名 + 手机号 + 密码,完成注册
发送手机验证码后将验证码存数据库,由后端校验前端验证码是否输入一致
1.点击获取手机验证码 - 验证手机是否注册
根据手机号查询用户集合,没有查询到记录
表示手机号没有被注册
根据手机号发送验证码,并在发送成功后将手机号和验证码一起插入用户集合
如果查询到记录
验证账户名和密码是否为空,如果不为空,表示该手机号已经被注册
如果为空,表示只是发送过短信验证码,重新发送一条验证码,并更新该手机号对应的验证码即可
2.注册形式:
-
手机号注册
手机号就是用户名 -
用户名注册
手机号只是一个信息而已,一个手机号会有多个账号 -
手机号且用户名注册
用户名就是用户名,手机号也可以是用户名,但是一个手机号只能对应一个用户名
注册形式的逻辑:
// 接收用户名,手机号,密码,验证码
// 1. 根据用户名读取数据
// 读到了,提醒,用户名重复
// 没读到,下一步
// 2. 判断手机号是否存在
// 不存在,提醒,先发验证码
// 存在,下一步
// 3. 根据手机号,判断是否有用户名
// 有,提醒,一个手机号只能对应一个用户
// 没有,下一步
// 4. 判断手机号和验证那是否匹配
// 不匹配,提醒验证码错误
// 匹配,下一步
// 5. 可以注册了,根据手机号,修改用户信息
// 写入:id,用户名,密码,注册时间,性别,爱好…
四、登录的业务逻辑
用户名 或 手机号,密码
根据用户名或手机号查询用户数据
-没查到,没注册
-查到了,下一步
密码是否匹配
-不匹配,密码错误
-匹配登录成功,更新数据信息
五,前端登录验证
一、token验证思路(后端生成,发给前端进行存储)
第一次请求时,用户发送账号与密码
后台校验通过,生成一个有时效性的token,再将此token发送给用户
用户获得token后,将此token存储在本地,一般存储在localstorage或cookie
之后每次请求都会将此token添加在请求头,所有需要校验身份的接口都会被校验token,若token解析后的数据包含用户身份信息,则身份验证通过。
ajax登陆,成功后接受后端返回一个token字段str,
使用localStorage.setItem(‘token’, str)或document.cookie = “token=” + str,
以后再调用接口时先从本地取出token字段的值,然后随着请求的数据一起发送到服务器,服务器验证token的有效性,如果ok则返回数据,如果不ok,返回某一个字段,表示未登录,前端负责页面跳转到登录页面
二、生成token
1.安装第三方模块 - jsonwebtoken
npm i jsonwebtoken -S
2.生成token(sign)
const jwt = require(“jsonwebtoken”);
//参数1:要存储的数据
//参数2:加密因子
//参数3:有效期时间
const token = jwt.sign({
userId: data.id
}, “代码天才”, {
expiresIn: 7 * 24 * 60 * 60
});// 将token返回给前端请求
3.验证token(verify)
jwt.verify(token,“代码天才”,(err,data)=>{
if(err){ reject(‘token 验证失败’)}
console.log(data)
})
六,获取用户信息
获取个人信息
- 用户id,token