博主最近工作的时候,公司后台使用的JAVA,在做登陆时总会传来一个token然后我存在了本地存储中或Vuex中,之后每一次请求把它带在请求头上,然后就好奇想要自己做一个后台服务器然后做一个完整的登陆的逻辑。

后台的搭建

对于一个前端开发人员,当然会选择更容易上手的Node.js的express搭建

遇到的问题

  • 如何搭建一个本地服务器

    • 首先需要先下载好Node.js 然后在终端中输入 node --version 查看Node是否已经安装好
  • 如何使用express

    • 下载express框架

      • 在终端中输入 npm install express --save 下载
    • 使用express框架搭建本地服务器
      • 在创建的js文件顶部引入express框架(var express = require('express'))
      • 创建本地服务器(var app = express()
      • 设置端口号
          app.listen(3000, () => {
        console.log('http://localhost:3000')
        })
      • 添加一个登陆的接口

        app.get('/login', (req, res) => {})

        形参列表中的req是请求对象,res是响应对象,req具有一些属性来保存请求中的一些数据,而res是当一个HTTP请求到来时,Express程序返回的HTTP响应
    • 这样一个简易的本地服务器就搭建完成了
  • 使用json文件模拟数据并且读取

    • 创建一个json文件(/json/login.json
        {
      "count":3,
      "userArray": [{"name":"qiqi","pwd":123456}]
      }
    • 引入fs模块(const fs = require('fs')
      fs.readFile('./json/test.json', 'utf8', (err, data) => {
    if (err) {
    console.error(err)
    return
    }
    console.log(data)
    })
    • 将读取文件的步骤放到接口中并且使用 res.end(data) 替换 console.log(data) 使得访问该接口有响应数据。
  • 跨域(后台)

    • 在主文件中添加
           app.all("*", function (req, res, next) {
      //设置允许跨域的域名,*代表允许任意域名跨域
      res.header("Access-Control-Allow-Origin", "*");
      //允许的header类型
      res.header("Access-Control-Allow-Headers", "content-type");
      //跨域允许的请求方式
      res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
      if (req.method.toLowerCase() == 'options') {
      res.send(200); //让options尝试请求快速结束
      } else {
      next();
      }
      })
  • 设置token

    • 使用jsonwebtoken插件简单生成token

      • 下载jwt(npm install jsonwebtoken
      • 引入jwt(const jwt = require('token)
      • 使用jwt(创建生成和验证token的方法)
         // 生成token
        const generateToken = (data) => {
        const secret = '这是一段秘钥,用于验证token时使用'
        const token = jsonwebtoken.sign(
        data,
        secret, {
        expiresIn: 60 * 60 * 24 * 3
        })
        if (token) {
        return token;
        } else {
        return 'err'
        }
        }
        // 验证token
        const verifyToken = (data) => {
        let result = {}
        if (data) {
        const secret = '这是一段秘钥,用于验证token时使用'
        jsonwebtoken.verify(data, secret, (err, decoded) => {
        if (err) {
        result = str;
        } else {
        result = decoded
        }
        })
        return result
        } else {
        return 'error'
        }
        }

未完待续···

Vue和Node.js交互之token的更多相关文章

  1. socket应用(vue、node.js、M站)

    socket应用(vue.node.js.M站) 前言:我们在做一些项目的时候需要做到实时变化, 比如我们有时候有需求会要求我们做一个类似于聊天室的页面 比如有些时候我们对某些东西进行点赞和刷票,需要 ...

  2. VsCode插件与Node.js交互通信

    首先关于VsCode插件通信,如果不明白的可以参考我的这篇博客VsCode插件开发之插件初步通信 如果需要详细例子的话,可以参考VsCode插件开发 现在又有一个新的需求是,VsCode插件可以通过j ...

  3. vue 之node.js 02

    文档 铺垫 以前网页制作web1.0 如今是web2.0-->交互式操作 前端工具 grunt gulp webpack :打包机 作用:将项目中的js,css,img,font,html等进行 ...

  4. Vue:node.js与vue安装配置

    下载node.js 官网: https://nodejs.org/zh-cn/ 查看node版本 node -v 配置淘宝NPM镜像源(下载速度快) npm install -g cnpm --reg ...

  5. vue之node.js的简单介绍

    一.什么是node.js? 它是可以运行JavaScript的服务平台,可以吧它当做一门后端程序,只是它的开发语言是JavaScript 二.安装 1.node.js的特性: - 非阻塞IO模型 - ...

  6. vue学习【第三篇】:vue之node.js的简单介绍

    什么是node.js 它是可以运行JavaScript的服务平台,可以吧它当做一门后端程序,只是它的开发语言是JavaScript 安装node.js node.js的特性 - 非阻塞IO模型 - 时 ...

  7. vue之 node.js 的简单介绍

    一.什么是 node.js? 它是可以运行在JavaScript的服务平台 二.安装 1.node.js的特性 - 非阻塞IO模型 - 时间驱动 2.运用场景 - 高并发低业务 - 实时场景 - 聊天 ...

  8. 基于 Token 的身份验证:JSON Web Token(附:Node.js 项目)

    最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起传统的身份验证方法,Token 扩展性更强, ...

  9. Hexo准备---Node.js、Vue

    Hexo准备---Node.js.Vue 安装node.js 1.下载node 配置node.js环境官网下载,一直next就好,非常方便. 下载官网: http://nodejs.cn/downlo ...

随机推荐

  1. TERSUS无代码开发(笔记06)-简单实例手机端页面设计

    手机端的设计 1.页面说明 2.默认页面===>提交请假单(上面页面双击进入,页面主要编辑区) 2.1默认页面===>提交请假单===>头部区(页面部份主要编辑区01) 2.1.1默 ...

  2. Jquery hover鼠标经过时弹出div动态提示语

    一.效果图 二.需求描述 1.鼠标经过table每一行时,弹出div动态提示语: 2.div弹出层的位置随鼠标位置的变化而变化: 3.鼠标离开table或获取的动态提示语为空时,div弹出层消失. 下 ...

  3. mysql锁——innodb的行级锁

    [前言]数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则.MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应 ...

  4. Java(JDK/Tomcat/Maven)运行环境配置及工具(idea/eclipse)安装

    Java (计算机编程语言) Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. Java语 ...

  5. 后端程序员之路 32、Index搜索引擎实现分析1-类的设计

    # 1.forward_index 正排索引(正向索引)- filter_t- filter_judge # 2.inverted_index 倒排索引(反向索引)- inverted_pre_sco ...

  6. 后端程序员之路 14、NumPy

    NumPy - NumPyhttp://www.numpy.org/ NumPy-快速处理数据 - 用Python做科学计算http://old.sebug.net/paper/books/scipy ...

  7. fastjson 漏洞利用 命令执行

    目录 1. 准备一个Payload 2. 服务器上启动 rmi 3. 向目标注入payload 参考 如果你已经用DNSLog之类的工具,探测到了某个url有fastjson问题,那么接着可以试试能不 ...

  8. Hexo的详细搭建过程——小白的血泪经历QAQ

    Hexo的详细搭建过程 环境要求: node.js git 这里提供Centos8.2下的安装过程: dnf module list nodejs dnf module install nodejs: ...

  9. selenium之元素定位的方法(二)

    XPath定位是XML Path的缩写,称为XML路径语言,是在XML文档中查找信息的一种语言,可用来再XML文档中对元素和属性进行搜索.XPath使用路径表达式来选取XML文档中的节点或节点集. X ...

  10. LightOJ-1074(SPFA判负圈+Bellman-Ford算法)

    Extended Traffic LightOJ-1074 这题因为涉及到减法和三次方,所以可能会出现负圈. 这里使用的算法叫做SPFA算法,这个可以用来判负圈和求解最短路.Bellman-Ford算 ...