登陆注册流程和token加密

本文主要探讨了登录注册流程中的token重要性,解释了JWT的工作原理以及非对称加密在生成和验证token中的应用。同时,详细介绍了如何使用mongoose操作MongoDB数据库,包括数据的增删改查操作。此外,还补充了token的使用场景和作用,如自动登录、权限验证等。
摘要由CSDN通过智能技术生成

有问题的知识点

  1.    // [ result.status == 1 && 'token' ]: result.status == 1 && token 
       token: result.status == 1 && token || '用户名密码错误,token不返回'
    
  2. 操作数据库 mongoose

一.token 重点

  1. 什么是token?

    • token是一段经过后端处理【 后端加密算法 】的特殊字符,后端在前端登录时,会给前端返回这个字符,前端拿到这个字符之后,要将它存入cookie,
  2. token的作用是什么?

    • 项目自动登录
    • 身份验证
      • 前端发送的每一个数据请求,要求携带一个token数据
    • 权限验证
      • 普通用户
      • 会员用户
      • 管理员
      • 原理:
        • 当用户注册并登录后,后端会给它返回一个token字符,
  3. 使用

    • 软件安装教程
    • 根目录创建了一个rsa文件夹: 用于存放公钥和私钥
      • 私钥 -> 加密
      • 公钥 -> 解密
  4. 生成token要用

    • 安装 openssl 软件(后端软件)
    • 引入第三方模块 jsonwebtoken (npm i jsonwebtoken -S ),使用方式见npm官网
    • 通过软件,在终端里面输入以下命令,能生成 非对称加密 通过私钥产生token 通过公钥解密token
    // 1.产生公钥和私钥
    // 产生私钥  openssl genrsa -out ./private_key.pem 1024    1024 代表私钥长度
    // 产生公钥  openssl rsa -in ./private_key.pem -pubout -out ./public_key.pem
    

二.登陆注册流程

  1. 创建项目

npm express -generator -g
npx express -e . (-e 表示项目使用ejs 模板, . 表示在当前目录创建项目)
该命令在npm 是5.2以上版本会 省略安装 npm express -generator -g

  1. 前端发ajax 请求,并判断cookie 有没有token,有cookie token存在自动登陆。否则要生成token字符

  // 自动登录

  function load () {
   
    const token = cookieUtil.get('TOKEN')
    if ( token  ) {
   
      setTimeout(function () {
   
        location.href = "./index.html"
      },2000)
    }
  }
  //发请求,少些内容了
   $.ajax({
   
    url: 'http://localhost:3000/login',
    data: {
   
        username: $('#username').val(),
        password: $('#password').val(),
        token: cookieUtil.get( 'TOKEN' )
      },
   })
  1. epxress 脚手架 响应数据和打造接口

router.route(’/login’).post(( req,res,next )=>{} ) 这是配置路由的一种链式写法
router.post(’/login’,( req,res,next )=>{} ) 这是配置路由的另一种写法
req.body 是前端发送请求发送来的内容
res.render(‘login’,{ data: {})===== login第一个参数是渲染模板名字,第二个参数是发给前端的值

const router = express.Router()
router.route('/login')//配置路由
.post( async ( req,res,next )=>{
   })
// 进行数据库操作
const result = await users.query( req.body )

  res.render('login',{
   //login 是渲染的模板ejs的名字,后缀名可省略
        data: JSON.stringify({
   //data是返回给前端的内容
          status: result.status,
          info: result.info,
          token: result.status == 1 &&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值