美文网首页
jsonwebtoken设置token passport

jsonwebtoken设置token passport

作者: 俗人彭jin | 来源:发表于2018-12-27 16:36 被阅读0次

    首先设置下载库文件

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

    相关文章

      网友评论

          本文标题:jsonwebtoken设置token passport

          本文链接:https://www.haomeiwen.com/subject/qrfdlqtx.html