我已实施基于JWT的护照策略,以保护我的快速API仅供经过身份验证的用户使用。此外,现在我需要为用户提供一个选项,以便与Linkedin连接并在其个人资料中添加更多详细信息。我正在使用passport-linkedin-oauth2与LinkedIn联系。
我从上面链接中提到的用户的linkedin个人资料中获取了所有必需的信息。但我面临的问题是,/auth/linkedin
和/auth/linkedin/callback
路由将受到保护,仅供经过身份验证的用户使用。我已经实现了与下面给出的相同,但问题是会话即来自JWT策略的用户数据由于linkedin策略而丢失,即使我已经实例化了两个护照对象。
user.js
路线档案:
const pass = require('passport').Passport;
const router = express.Router();
const passport = new pass();
const linkedinPassport = new pass();
router.use(passport.initialize({userProperty: "access"}));
router.use(passport.session());
require('../config/passport')(passport);
router.use(linkedinPassport.initialize({userProperty: "linkedin"}));
router.use(linkedinPassport.session());
require('../config/linkedin')(linkedinPassport);
passport.serializeUser((user, done) => { console.log("Serializing ID: " + user._id); done(null, user); });
linkedinPassport.serializeUser((user, done) => { console.log("L: " + user); done(null, user)});
router.get('/auth/linkedin', passport.authenticate('jwt', {session: true}), linkedinPassport.authenticate('linkedin', {session: true}));
router.get('/auth/linkedin/callback', passport.authenticate('jwt', {session: true}), linkedinPassport.authenticate('linkedin', {session: true}), (req, res) => {
console.log(req.access);
console.log(req.linkedin);
});
module.exports = router;