1.在Node中生成token,推荐使用jsonwebtoken模块,简称jwt
1.安装模块
npm i jsonwebtoken
2.引入模块
let jwt = require('jsonwebtoken')
3.自定义token生成的凭据和秘钥,并生成token
let payload = {...req.query,admin:true} //这是凭据 let secret = 'Make Sure Admin' //这是秘钥 let token = jwt.sign(payload,secret)
4.根据自定义秘钥,校验token,有回调
jwt.verify(token,secret,(err)=>{ if(!err){ } })
2.跨域问题解决
有一个经典的问题是,为什么我前端在将token放入headers中,会出现跨域问题,因为后端并没有将'token'这个字段名放入允许跨域的字段中,在后端添加上去即可
// 设置跨域 app.all("*", function (req, res, next) { //设置允许跨域的域名,*代表允许任意域名跨域 res.header("Access-Control-Allow-Origin", "*"); //允许的header类型,token的看这里 res.header("Access-Control-Allow-Headers", "content-type,token"); //跨域允许的请求方式 res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS"); if (req.method.toLowerCase() == 'options') res.send(200); //让options尝试请求快速结束 else next(); })