在我的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文档没有描述如何处理成功案例。成功授权后如何重定向?
答案 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;
});
真实时,不会调用该回调。