मैं चाहता हूं कि मैं एक टोकन के साथ या बिना राउटर को प्राप्त कर सकूं। उपयोगकर्ता एक टोकन दिया है, की तुलना में मुझे दे req.user
मार्ग के साथ या बिना टोकन JWT + PASSPORT
इस तरह:
router.get('/profile', function(req, res) {
if(req.user) { // or if (req.isAuthenticated())
res.send('logged')
} else {
res.send('not loggedIn')
}
});
मेरा ऐप: यदि मैं एक टोकन के बिना /profile
तक पहुँचने का प्रयास
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
को एक कोशिश मुझे not loggedIn
मैं, यहां तक कि एक टोकन के बिना इसे उपयोग करने में और अगर मैं एक toke प्रदान की चाहते देते हैं, मुझे उपयोगकर्ता दे।
ps: पहले से ही मार्ग और कार्यों में passport.authenticate('jwt')
का उपयोग करके परीक्षण किया गया है। यदि मैं टोकन देता हूं तो मुझे पहुंचने दें, अगर मुझे अनधिकृत न दें।