deserializeUser护照没有被调用/会话不工作?

时间:2016-03-23 17:26:54

标签: angularjs node.js session passport.js stripe-payments

我尝试使用我的angularjs / ionic应用程序中的Stripe对现有用户进行身份验证,并将其Stripe详细信息添加到其现有帐户中。

Passport适用于本地/社交登录,但使用Stripe我被建议使用Sessions,我不认为会话是相互识别的(可以/应该在没有会话的情况下完成吗?)。

SerializeUser被调用正常,并且一旦用户被认证" req.sessionStore.sessions"返回并包含到目前为止的所有会话,我想获得相应/正确的会话。我想我可能不完全理解使用会话背后的概念,我正在寻找建议。

我设置我的护照以使用这样的会议:

--make-bed --out unique_file

我的路线看起来像这样

app.use(session({
    secret: config.sessionSecret,
    resave: false,
    saveUninitialized: false,   
    cookie: {secure: false, maxAge: (4*60*60*1000)}
}));

app.use(passport.initialize());
app.use(passport.session());

我的SerializeUser和DeserializeUser看起来像这样

router.get('/auth/stripe', passport.authenticate('stripe'));
router.get('/auth/stripe/callback', function(req, res, next) {
    passport.authorize('stripe', function(err, user, info) {
    res.redirect('http://localhost:8100/#/tab/create');
})(req, res, next)
});

然后我的Stripe Passport策略如下所示:

passport.serializeUser(function(user, done) {
    done(null, user);
});

passport.deserializeUser(function(id, done) {
    done(null, id);
}); 

在我的护照策略中的console.log点,req.sessionStore.sessions的输出如下所示:

passport.use(new StripeStrategy(config.stripe, function(req, accessToken, refreshToken, stripe_properties, done) {
    console.log(req.sessionStore.sessions);

    User.where({stripeId: stripe_properties.stripe_user_id}).fetch().then(function(user) {
        if(!user) {
            // TODO add stripe auth to users account
            var newUser = new User();
            newUser.set({
                stripeId: stripe_properties.stripe_user_id,
                email: 'test1'
            });
            newUser.save().then(function() {
                console.log('saved stripeId');
                return done(null, user);
            });
        }
        return done(null, user);
    }).catch(function(err) {
        console.log(err);
        return err;
    });
}));

并包含到目前为止的所有会话,但我似乎无法访问它们(即使我可以知道这不是正确的答案)。

我在概念上缺少什么,并且代码明智地将发送到Stripe的会话与回来的会话连接起来?

为什么我的deserializeUser永远不会被调用?

非常感谢任何帮助!!

0 个答案:

没有答案