【问题标题】:Passport not working properly in NodeJS backendPassport 在 NodeJS 后端无法正常工作
【发布时间】:2020-11-18 21:25:07
【问题描述】:

我在 NodeJS 的世界里还是个新手,我的 Javascript 知识可以准确地描述为 noob+ 。不要因为我在这么简单的事情上(看似)失败而嘲笑我!

几天来我一直在尝试使用 Passport 使 NodeJS 后端支持 Google 授权。

计划是将响应重定向到某个页面,但由于某种原因它不起作用。

相关代码如下:

const GOOGLE_CLIENT_ID = "...........................................";
const GOOGLE_CLIENT_SECRET = "..................";
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.use(new GoogleStrategy({
        clientID: GOOGLE_CLIENT_ID,
        clientSecret: GOOGLE_CLIENT_SECRET,
        callbackURL: "http://localhost:3000/auth/google/callback"
    },
    function (token, tokenSecret, profile, done) {
        console.log(profile.id);}
));

const express = require('express');
const cors = require('cors');
const passport = require('passport');
const router = express.Router();
const passportConfig = require('./Config/passport.config');
const blogapp = express();

blogapp.use(cors()); 
blogapp.use(express.static('public'));
blogapp.use(passport.initialize());
blogapp.use(passport.session());
blogapp.use(router);
.
.
.
.
.
.

blogapp.get('/auth/google',
    passport.authenticate('google', {scope: ['https://www.googleapis.com/auth/plus.login' ]}));

blogapp.get( '/auth/google/callback',
    passport.authenticate( 'google', {
        successRedirect: '/',
        failureRedirect: '/loginfailed'
    }));


它成功打印了 profile.id,但没有继续重定向到其他页面。 相关函数的另一个版本是这样的:

blogapp.get('/auth/google/callback',
    passport.authenticate('google', {failureRedirect: '/loginfailed'}),
     (req, res) => {
        res.redirect('/');
    });

但也没有用。

我还尝试了多个版本的 GoogleStrategy,包括返回 done(parameter1, parameter2) 的版本,但没有任何反应。 它只打印 id,然后卡住,不会进入下一页。

我做错了什么?

【问题讨论】:

    标签: javascript node.js passport.js google-authentication


    【解决方案1】:

    Passport 需要知道用户已通过在策略回调中使用 done() 帮助程序成功验证。

        function (token, tokenSecret, profile, done) {
            console.log(profile.id);
            done(null, profile);
        }
    

    有关验证回调和done 函数的更多信息: http://www.passportjs.org/docs/configure/#verify-callback

    【讨论】:

    • 这就是为什么我们不应该在仔细阅读手册之前使用某些东西。非常感谢您的帮助!
    • 完成。如您所知,我是新来的。再次感谢您
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 2014-11-15
    • 2019-07-10
    • 2014-01-27
    相关资源
    最近更新 更多