# advancedNode **Repository Path**: yangshikang1997/advanced-node ## Basic Information - **Project Name**: advancedNode - **Description**: 高级node的知识点 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README multer({dest:'uploads/'}) 没有文件夹会创建文件夹 配置比较少 multer({storage:storage}) 没有文件夹会报错 需要手动创建文件夹 配置相对较多 var storage = multer.diskStorage({ // 文件最终存储的位置 destination: function (req, file, cb) { cb(null, 'uploads') 不要加/会变成绝对路径 }, filename: function (req, file, cb) { const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9) // 时间戳 let fixStr = file.mimetype.split('/')[1] 截取图片后缀 比如 png jpg cb(null, file.fieldname + '-' + uniqueSuffix + '.' + fixStr) 拼接图片后缀 } }) 使用token进行登陆验证 一、token是什么 由于http请求是“无状态” 即每一次的请求发送到服务器端,服务器端不知道是“谁” 为了解决这一问题 引入token(令牌)相当于身份证号 二、过程 1、前端登陆 2、后端根据前端登陆之后的信息 生成token (加密字符串) 并且返回给前端 3.前端存储( localstorage , sessionStorage ,cookie ) 4.之后的每次请求都携带此token 三、node-jsonwebtoken的使用 1.生成 npm i jsonwebtoken -S const jwt = require('jsonwebtoken') let token = jwt.sign({phone},'haotian',{expiresIn:'10h'}) ctx.body = { code: 1, msg: '登陆成功', token } 2.解析 判断token是否合法 let token = ctx.request.header.authorization 对token进行解密 let decoded = jwt.verify(token,'haotian') if(decoded.message){ //解析失败 身份过期 cex.body ={ code:0, msg:decoded.message } }else{ //解析成功 获取数据 }