2015-06-18 60 views
1

在我的Node.JS應用程序的服務器代碼中,我使用passport.js(v0.2.1,最新版本是v0.2.2,但從v0.2.1到link沒有顯着變化)進行身份驗證,我也有一些允許用戶連接他們的社交網絡帳戶,如Twitter和Facebook的路線。如何從passport.js授權回調成功時重定向?

由於用戶已經登錄,正確passport API功能使用的是authorize,不authenticate:用戶授權或Facebook網站上拒絕權限

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

這條路線是由Facebook的回叫: - 如果用戶拒絕許可,則故障重定向被稱爲 - 如果用戶授予的許可,則成功重定向不叫,而不是下一個中間件服務器被稱爲替代

的passpo rt.js文檔沒有描述如何處理成功案例。如何在成功授權後重定向?

回答

1

摘要

一個成功的授權將控制傳遞到應執行重定向本身下一個中間件。

詳細

挖入護照代碼,在lib/authenticator.js,所述authorize原型設置assignProperty以考慮:

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不受護照框架中定義,在authorize代碼退回到使用authenticate,如lib/middleware/authenticate.js中所定義。在此方法中,成功重定向僅發生在req.logIn的回調內,assignProperty真的不會被調用。