首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在护照FacebookTokenStrategy和GoogleStrategy中获取子域

在护照FacebookTokenStrategy和GoogleStrategy中获取子域
EN

Stack Overflow用户
提问于 2018-09-20 22:29:06
回答 1查看 136关注 0票数 2

我正在构建一个具有通配符子域的node.js应用程序。每个子域将是应用程序的一个单独部分,该应用程序将根据子域为用户提供单独的身份验证。

例如,让我们说我的应用程序将有子域abc.domain.comxyz.domain.com以及下面的用户

代码语言:javascript
复制
User1@gmail.com signs up for abc.domain.com
User2@yahoo.com signs up for xyz.domain.com 
User3@msn.com signs up for both abc.domain.com and xyz.domain.com

每个用户只能访问他们注册的子域。因此,User1@gmail.com应该能够登录到abc.domain.com,但在xyz.domain.com上应该被拒绝

通常,我会使用req.get('host')获取子域,然后从其中提取子域,但据我所知,passport.js没有req参数。对于我来说,是否有获得用户试图登录的当前站点的子域名?下面是从https://github.com/drudge/passport-facebook-token复制的护照-facebook标记代码

代码语言:javascript
复制
var FacebookTokenStrategy = require('passport-facebook-token');

passport.use(new FacebookTokenStrategy({
        clientID: FACEBOOK_APP_ID,
        clientSecret: FACEBOOK_APP_SECRET
    }, function(accessToken, refreshToken, profile, done) {
        // SQL statement will go here that will check whether a user is signed up for the subdomain they are logging into. It will also check if the user exists in the database
    });
  }
));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-21 15:51:39

我找到了解决方案,所以回答我自己的问题,以防有人需要知道如何在使用passport.js的任何策略中显示req,您所需要做的就是将passReqToCallBack设置为true。

下面是更新的代码

代码语言:javascript
复制
passport.use(new FacebookTokenStrategy({
        clientID: FACEBOOK_APP_ID,
        clientSecret: FACEBOOK_APP_SECRET,
        passReqToCallback: true   // Added for req to show in callback
    }, function(req, accessToken, refreshToken, profile, done) {
        // SQL statement will go here that will check whether a user is signed up for the subdomain they are logging into. It will also check if the user exists in the database
    });
  }
));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52434198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档