依赖总结
后端部分
1  | "dependencies": {  | 
前端部分
1  | "dependencies": {  | 
token
生成token
后端代码 users.js  登录成功部分节选
1  | const jwt = require('jsonwebtoken');  | 
验证token
passport初始化
后端代码 index.js 节选
1  | const passport = require('passport');  | 
后端代码 passport.js 节选
1  | const JwtStrategy = require('passport-jwt').Strategy,  | 
进行请求
必须带着 token 才能请求成功。使用 postman 进行测试时要设置 headers 部分的 Authorization 为登录请求后得到的 token 值,在这个项目中,只有登录和注册是不带 token 验证的。
后端代码 profiles.js 节选
1  | // $route POST api/profiles/add  | 
后端代码 users.js 节选
前端部分并没有使用 current 这个接口,这个接口只是为了了解 token ,特别是下面 req.user 部分,个人觉得 req.user 部分就代表 token 验证成功,表示谁去请求。
1  | // $route GET api/users/current  | 
请求拦截响应拦截
前端代码中 http.js 节选
1  | // 请求拦截  | 
vuex
前端部分 store.js 代码
1  | import Vue from 'vue'  | 
前端部分 Login.vue 代码节选
1  | this.$axios.post("/api/users/login", this.loginUser)  | 
总结流程
首先进入 register 或者 login 页面,因为有路由守卫,所以不能直接进入 index 页面,进行注册,然后登录,登录会返回后端生成的 token ,存储 token 到 localStorage 中,并解析 token 存储到 vuex 中,设置授权 setAuthenticated 为真,setUser 为 token 解析后的用户信息,如果登录失败,可能是 token 过期失效,如果退出登录的话,会删除 localStorage 中的 token,并将 vuex 中的存储清除。
进行对数据的增删改查需要带上 token ,在请求拦截与响应拦截中有相关的配置。