2016-11-17 23 views
0

我已经通过单独的中间件,在我的快递应用中为我的脸书&谷歌工作了URI端点身份验证。 Facebook使用护照facebook-token策略,而对于谷歌,我使用nodejs客户端lib为Google API编写了自己的中间件。我想要的是使用这两个中间件对URI端点上的用户进行身份验证。快递 - 使用脸书和谷歌验证URI端点

/* 
//google controller file 
module.exports = function(req,res,next){ 

} 
*/ 
googlectrl = require('google controller file'); 
//this works fine 
app.get('someurl',googlectrl,function(req,res){ 
//google user authenticated 
} 

//this works fine too 
app.get('someurl',passport.authenticate('facebook-token',{session=false}),function(req,res){ 
//google user authenticated 
} 

但是,如何将两者结合起来用于同一个uri。否则,我需要使用单独的URI为谷歌& fb。请咨询。请注意我已经尝试实施谷歌战略,它没有奏效。

回答

0

你可以使用一个数组字段命名为供应商用户对象,如下图所示:

{ 
    "name": "asdasd", 
    "providers": [ 'google'] 
} 

而在服务器端检查用户正在使用哪个提供商,并相应地调用该方法。例如:

如果与谷歌的服务供应商的用户的请求,然后调用

function handleGoogleAuthentication(){ 
    // Logic 
} 

如果与Facebook的服务供应商的用户的请求,然后调用

function handleFacebookAuthentication(){ 
    //Logic 
} 
+0

问题在这样做,是快递中间件需要(req,res,next){},并且我还需要传递passport对象以使用facebook-token策略(如passport.authenticate('facebook'..))进行身份验证。但它不允许。我的另一个选择是为google和fb创建单独的URI端点,并根据用户登录的内容分别路由请求 - facebook,google –