多个护照js策略的不同会话数据

时间:2018-03-28 05:25:02

标签: javascript node.js express passport.js

我已实施基于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;

0 个答案:

没有答案