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();
})