后台管理项目之用户注册,登录,前端登录验证

一.注册
一.短信验证码服务
登录阿里云
选择:产品分类 -> 云通信 -> 短信服务 -> 管理控制台 -> 新手引导
申请国内短信签名
申请国内短信模板
选择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. 手机号且用户名注册
    用户名就是用户名,手机号也可以是用户名,但是一个手机号只能对应一个用户名
    注册形式的逻辑:
    // 接收用户名,手机号,密码,验证码
    // 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

你可能感兴趣的:(node.js,前后端交互,mongodb,数据库,node.js)