我有表示后端和create-react-app2作为前端,我也使用setupProxy。现在,我已经为Google登录配置了该应用,但是登录后却无法正确重定向到索引页面。这是console.developer.google.com
中的Google oauth设置我正在使用护照google oauth20进行身份验证: 这是我的护照文件:
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const keys = require('./../keys/secret');
const {User} = require('./../models/user');
module.exports = function(passport) {
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
passport.use(new GoogleStrategy({
clientID: keys.googleClientID,
clientSecret: keys.googleClientSecret,
callbackURL: '/auth/google/callback'
},
async (accessToken, refreshToken, profile, done) => {
const existingUser = await User.findOne({ 'google.id' : profile.id });
if(existingUser) {
done(null, existingUser);
}else {
const user = await new User({
'google.id' : profile.id,
isSocialAccountPresent: true })
.save();
done(null, user);
}
}
));
}
这是我的路线:
router.get('/google',
passport.authenticate('google', { scope: ['profile', 'email'] }));
router.get('/google/callback',
passport.authenticate('google'),
(req, res) => {
// Successful authentication, redirect home.
res.redirect('/');
});
这是我的setupProxy文件:
const proxy = require("http-proxy-middleware");
module.exports = function(app) {
app.use(proxy("/auth/*", { target: "http://localhost:5000/" }));
app.use(proxy("/api/*", { target: "http://localhost:5000/" }));
};
我将获取重定向到以下网址:
http://localhost:3000/auth/google/callback?code=4/0gBVQE1R0m7FWFlg_QtXE2n9lvwVHoG_lNNH_zCueOeQAJZc6-8FygiH9u_9BfnQQt8yl2ECmD1gW3Gq9by25D4&scope=email+profile+https://www.googleapis.com/auth/userinfo.profile+https://www.googleapis.com/auth/userinfo.email
答案 0 :(得分:1)
在setupProxy.js文件中,尝试此操作...
app.use(proxy("/auth/**", { target: "http://localhost:5000/" }));
app.use(proxy("/api/*", { target: "http://localhost:5000/" }));
您会看到我添加了另一个星号。这告诉节点为“ /回调”更深入一层。希望对您有所帮助。
答案 1 :(得分:0)
使用res.redirect('/')必须使用完整路径(http://localhost:5000...。)。
答案 2 :(得分:0)
这里没有答案对我有用。我相信您已经在React客户端的setupProxy.js
文件夹中有了文件src/
。然后,在该文件中,如果您为changeOrigin: true
函数中传递的对象设置createProxyMiddleware
,则应删除该文件,这样可以解决问题。至少对我有用。
答案 3 :(得分:0)
这对我有用 setupProxy.js
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = (app) => {
app.use(
["/api", "/auth/google/callback"],
createProxyMiddleware({
target: "http://localhost:5000",
})
);
};