如何从passport.js重定向授权回调成功?

时间:2015-06-18 07:25:16

标签: node.js oauth passport.js

在我的Node.JS应用程序的服务器代码中,我使用passport.js(v0.2.1,最新版本是v0.2.2但是从v0.2.1没有重大更改 - link)对于身份验证,我还有许多路由,允许用户连接他们的社交网络帐户,如Twitter和Facebook。

由于用户已登录,因此要使用的authorize功能为authenticate,而不是router.get('/api/connect/facebook/callback', passport.authorize('facebook-connect', { successRedirect: '/profile?message_code=fb_accept', failureRedirect: '/profile?message_code=fb_decline', }));

lib/authenticator.js

在用户授权或拒绝Facebook网站上的权限后,Facebook会回复此路线: - 如果用户拒绝权限,则调用失败重定向 - 如果用户授予权限,则不会调用成功重定向,而是调用下一个中间件服务器

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

1 个答案:

答案 0 :(得分:1)

<强>摘要

成功的授权将控制传递给下一个应该执行重定向的中间件。

<强>详细

authorize中加入护照代码,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); }; 原型将assignProperty设置为帐户:

authorize

由于Passport框架未定义authenticate,因此授权代码将使用lib/middleware/authenticate.js中定义的req.logIn。在此方法中,成功重定向仅发生在assignProperty的回调中,当$("input").on("focus", function(event){ if(event.handled !== true) { $(".footerClass").css({ 'position': 'absolute' }); $(".footerClass").css('display', 'none'); } return false; }); $("input").on("blur", function(event){ if(event.handled !== true) { if(!$("input").is(":focus")){ $(".footerClass").css({ 'position': 'fixed' }) $(".footerClass").css('display', 'block'); } } return false; }); 真实时,不会调用该回调。