当前位置: 首页 > 知识库问答 >
问题:

为PassportJS创建React App代理到快递服务器不工作

贝成业
2023-03-14

花了几天时间试图为我的反应应用程序设置一个代理到我的Express后端,我在其中使用passportjs进行gooogle社交身份验证。

PORT 5000上的PORT 3000 express服务器上的react-dev服务器

当我单击该按钮时,它会重新加载页面,但不会启动passportJS google auth过程(即不会重定向到oAuth2流)。

<Button href='/auth/google'> Link Button </Button>
  • curl正确代理从端口3000到5000的呼叫
  • 当我直接转到在此处创建的express serverendpoint时,PassportJS流程可以正常工作:http://localhost:5000/auth/google

关键代码段在下面,应该允许代理从反应前端工作到表达护照JS Oauth2流。

package.json

"proxy": "http://localhost:5000"

应用.js

  <a href="auth/google/" target="">
    <Button> Link Button </Button>
  </a>

服务器.js

app.get('/auth/google',
    passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/userinfo.email', 
                                                'https://www.googleapis.com/auth/userinfo.profile',
                                                'openid'] }),
);
   

setupProxy.js(设置代理.js)

const proxy = require("http-proxy-middleware");

module.exports = function(app) {
    app.use(proxy('/auth', { target: 'http://localhost:5000/' }));
};

共有1个答案

龙洛城
2023-03-14

我最终不需要包.json代理条目。这些是所有部分,使一切按预期工作。

我在/client目录中有一个前端应用程序,我在其中使用了create-ract-app。

从创建反应应用程序(客户端目录)的pack.json中,我删除了这个,因为http代理中间件似乎需要commonjs导入“类型”:“模块”,

setupProxy.js(设置代理.js)

const proxy = require("http-proxy-middleware");

module.exports = function(app) {
    app.use(proxy('/auth/google', { target: 'http://localhost:5000/' }));
};

App.js使用材质UI按钮

<Button href="/api/auth/google" variant="contained" color="primary">

索引.js用于护照JS配置和快速服务器

在passportGoogle.strategy选项中,将其设置为与配置的其余部分一致

callbackURL: `/api/auth/google/callback`


app.get('/api/auth/google',
    passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/userinfo.email', 
                                                'https://www.googleapis.com/auth/userinfo.profile',
                                                'openid'] }),
);
   
app.get('/api/auth/google/callback', 
    passport.authenticate('google', { failureRedirect: '/failed' }),
        function(req, res) {
            res.redirect('http://localhost:3000');
        }
);

谷歌控制台

URI

http://本地主机:3000

授权重定向URI

http://localhost:3000/api/auth/google/callback

 类似资料:
  • 我正在使用Jersey 2.x和内置在Jersey中的HK2。我需要在我的服务中用注释标记某些方法,也就是说,我想在这些方法调用之前和之后执行一些额外的操作。不幸的是,HK2没有任何AOP能力。我认为只要调用工厂的方法,就可以将工厂绑定到服务的接口,并创建服务的代理。然而,我需要一些东西到我的工厂工作: 1)创建代理的服务类和接口

  • 我正在尝试将大量文件从服务器A传输到服务器B。我已经在A上设置了FTP(使用FileZilla)。 当我尝试从PC连接到A时,它工作正常。但当我尝试从B连接到A时,它不起作用。FTP用户登录,但目录列表命令一直处于停滞状态。 防火墙端口21已打开。我尝试了多台服务器、不同的FTP客户端,但没有用。除了FileZilla,我还尝试了内置FTP服务的ISS,得到了相同的结果。 使用相同凭据从本地完美连

  • 创建 http 服务器 package main   import ( "net/http"   "github.com/hprose/hprose-golang/rpc" )   func hello(name string) string { return "Hello " + name + "!" }   func main() { service := rp

  • 使用代理服务器 如果你想使用代理服务器进行激活进程,可勾选这个选项。请选择“代理服务器类型”并输入“主机”、“端口”、“用户名”和“密码”。

  • 使用代理服务器 如果你想使用代理服务器进行激活进程,可勾选这个选项。请选择“代理服务器类型”并输入“主机”、“端口”、“用户名”和“密码”。

  • 使用代理服务器 如果你想使用代理服务器进行激活进程,可勾选这个选项。请选择“代理服务器类型”并输入“主机”、“端口”、“用户名”和“密码”。