我想我可以使用或不使用令牌访问路由器.如果用户有令牌,请给我req.user
像这样:
router.get('/profile', function(req, res) { if(req.user) { // or if (req.isAuthenticated()) res.send('logged') } else { res.send('not loggedIn') } });
我的应用:
var JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; var opts = {} opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); opts.secretOrKey = 'sh'; passport.use(new JwtStrategy(opts, function(jwt_payload, done) { User.findOne({id: jwt_payload.sub}, function(err, user) { if (err) { return done(err, false); } if (user) { done(null, user); } else { done(null, false); // or you could create a new account } }); }));
如果我尝试访问/profile
没有令牌,工作正常.但是,当尝试使用/profile
标题中的标记访问时,会给我not loggedIn
即使没有令牌我也想访问它,如果我提供了一个toke,请给我用户.
ps:已经passport.authenticate('jwt')
在路线和工作中使用过.如果我给令人让我访问,如果不给我未经授权.