首先设置下载库文件
yarn add passport-jwt passport jsonwebtoken
jsonwebtoken设置token
const rule = {id: data._id, name: data.user} // 加密规则
let token = jwt.sign(rule, 'secret', {expiresIn: 60 * 60}, (err, token) => {
if (err) throw err
// 这里直接返回token
return res.json({code: 0, msg: '用户登录成功', token: "Bearer " + token})
})
passport passport-jwt获取token
// 在app.js里面引入
const passport = require("passport")
// passport 初始化
app.use(passport.initialize());
require("./config/passport")(passport)
在这里引入的文件里面 记住这里的内容在引入的js里面
const JwtStrategy = require('passport-jwt').Strategy,
ExtractJwt = require('passport-jwt').ExtractJwt;
// 引入模型
const model = require('../model/model')
// 获取模型
const User = model.getModle('user')
const keys = require("../config/keys");
const _filter = {pwd: 0, __v: 0}
const opts = {}
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = keys.secretOrKey;
module.exports = (passport) => {
passport.use(new JwtStrategy(opts, (jwt_payload, done) => {
User.findById(jwt_payload.id, _filter)
.then(userData => {
if (userData) {
return done(null, userData)
}
return done(null, false)
})
.catch(err => console.log(err))
}))
}
// 然后接口调用的时候 //先当当前文件引入
const passport = require("passport")
// 这里的req.user就是默认返回的值
Router.get('/info', passport.authenticate("jwt", {session: false}), function (req, res) {
// 首先拿到cookie校验
if (!req.user) {
return res.json({code: 1, msg: '验证token或者没登录信息'})
}
return res.json({code: 0, data: req.user})
})
网友评论