如何从passport.js授权callback成功redirect?

在我的Node.JS应用程序的服务器代码中,我使用passport.js(v0.2.1,最近的版本是v0.2.2,但从v0.2.1 – 链接没有重大变化)进行身份validation,我也有一些路由允许用户连接他们的社交networking帐户,如Twitter和Facebook。

由于用户已经login,所使用的正确的护照API函数是authenticate ,不authenticate

 router.get('/api/connect/facebook/callback', passport.authorize('facebook-connect', { successRedirect: '/profile?message_code=fb_accept', failureRedirect: '/profile?message_code=fb_decline', })); 

用户授权或拒绝Facebook网站上的权限后,该路由被Facebook回叫: – 如果用户拒绝权限,则调用失败redirect – 如果用户授予权限,则不调用成功redirect,而是调用下一个中间件服务器被调用

passport.js文档没有描述如何处理成功案例。 如何成功授权后redirect?

概要

一个成功的授权将控制权交给下一个应该执行redirect的中间件。

详情

挖掘到lib/authenticator.js的护照代码, authorize原型将assignProperty设置为account:

 Authenticator.prototype.authorize = function(strategy, options, callback) { options = options || {}; options.assignProperty = 'account'; var fn = this._framework.authorize || this._framework.authenticate; return fn(this, strategy, options, callback); }; 

由于authorize不是由Passport框架定义的,因此授权代码将回退到使用authenticate ,如lib/middleware/authenticate.js所定义。 在这种方法中,成功redirect仅发生在req.logIn的callback中,当assignProperty为真时不会调用。