当前位置: 首页 > 面试题库 >

在Passport策略回调中获取请求对象

巫马欣嘉
2023-03-14
问题内容

所以这是我的passport-facebook策略配置:

    passport.use(new FacebookStrategy({
        clientID: ".....",
        clientSecret: ".....",
        callbackURL: "http://localhost:1337/register/facebook/callback",
    },
    facebookVerificationHandler
    ));

这是facebookVerificationHandler:

var facebookVerificationHandler = function (accessToken, refreshToken, profile, done) { 
    process.nextTick(function () {    
        .......
    });    
};

有没有办法访问facebookVerificationHandler中的请求对象?

用户已使用LocalStrategy注册到我的网站,但是他们将能够添加其社交帐户并将这些帐户与本地帐户相关联。调用上面的回调时,req.user中已经有当前登录的用户,因此我需要访问req才能将该用户与facebook帐户关联。

这是实现它的正确方法还是我应该考虑另一种方法?

谢谢。


问题答案:

因此,我通常在有请求时设置策略,而不是在应用程序启动时设置策略。例如:

app.get(
    '/facebook/login'
    ,passport_setup_strategy()
    ,passport.authenticate()
    ,redirect_home()
);

var isStrategySetup = false;
var passport_setup_strategy = function(){
    return function(req, res, next){
        if(!isStrategySetup){

            passport.use(new FacebookStrategy({
                    clientID: ".....",
                    clientSecret: ".....",
                    callbackURL: "http://localhost:1337/register/facebook/callback",
                },
                function (accessToken, refreshToken, profile, done) { 
                    process.nextTick(function () {    
                        // here you can access 'req'
                        .......
                    });    
                }
            ));

            isStrategySetup = true;

        }

        next();
    };
}

使用此html" target="_blank">方法,您可以访问验证处理程序中的请求。



 类似资料:
  • 错误视图 InternalOautherRror:在Strategy.oauthStrategy._CreateOutherRror(/users/Menaka/WebStormProjects/CardCreaterServer/Node_Modules/Passport-Oauth1/Lib/Strategy。js:396:17)在/users/Menaka/WebStormProjects/

  • 我需要帮助发送请求到FTP服务器下载文件...我已经写了下面的代码下载一个文件使用HTTP它工作成功,但我不知道如何做一个FTP.....由于我已经使用套接字来建立连接,它必须通过这种方式来完成,请建议我下载一个FTP文件的请求(发送到服务器)的格式是什么...... ///////////////编码////////////////////////////////////////////////

  • 我使用拦截器设置请求的头,如下所示: 并且一切按预期工作(服务器看到并接受)。 我的问题是,当响应到来时,我想在我的应用程序中读取这些标题。 我使用,但总是返回一个空的String[]。所有其他属性(url、params、verb)都可以访问,只有标头丢失了。 我在请求头中设置了一个键,基本上我想在收到响应时检查这个键。 有没有线索为什么标头不可见以及如何在中获取它们?

  • 我试图调用一些API在我的javascript代码中获取。我正在我的机器中使用ReactJs开发,并在同一网络中使用另一台机器中的. net开发API。有了邮递员,我可以调用应用编程接口,但是没有。我尝试调用其他服务器中的另一个API,结果是成功的。 我正在使用fetch并尝试使用axios。我在这个API的堆栈溢出中发现了另一个问题:https://gturnquist-quoters.cfap

  • 我用的是Spring靴。我已经为SOAP web服务编写了一个ClientInterceptor,我想记录我要向其发送请求的URL,并且我想在HandlerResponse方法中这样做。然而,我找不到一个方法来做到这一点。有可能吗?任何帮助都会很好。 创建restTemplate的方式

  • 在 Service Worker 环境下,可以通过 Fetch API 发送网络请求获取资源,也可以通过 Cache API、IndexedDB 等本地缓存中获取缓存资源,甚至可以在 Service Worker 直接生成一个 Response 对象,以上这些都属于资源响应的来源。资源请求响应策略的作用,就是用来解决响应的资源从哪里来的问题。 接下来将介绍一些常用的策略及其简易实现,这些给出的策略