Node.js 护照及;JWT&;谷歌战略-禁用会话&;google回调后的res.send()

Node.js 护照及;JWT&;谷歌战略-禁用会话&;google回调后的res.send(),node.js,express,passport.js,json-web-token,passport-google-oauth,Node.js,Express,Passport.js,Json Web Token,Passport Google Oauth,使用: 我想使用谷歌登录-为此,我需要以某种方式将用户模型传递回客户端。 所有的例子都使用google回调。 我该怎么办: 1.使用passport-google-oauth2时禁用会话。 2.res.send()在google身份验证后将用户发送到客户端 如果我的方向不对,请随时提出备选方案。通过一些见解设法克服这一问题: 1.在express中禁用会话-只需删除会话的中间件 // app.use(session({secret: config.secret})) 二,。当使用Google身

使用:

我想使用谷歌登录-为此,我需要以某种方式将用户模型传递回客户端。 所有的例子都使用google回调。

我该怎么办:
1.使用passport-google-oauth2时禁用会话。
2.res.send()在google身份验证后将用户发送到客户端


如果我的方向不对,请随时提出备选方案。

通过一些见解设法克服这一问题:
1.在express中禁用会话-只需删除会话的中间件

// app.use(session({secret: config.secret}))
二,。当使用Google身份验证时,实际发生的情况是,会重定向到Google登录页面,如果登录成功,则会使用您提供的url将您重定向回

这实际上意味着,一旦谷歌调用你的回调,你就不能执行res.send(令牌,用户)-它根本不起作用(任何人都可以解释为什么?)。因此,您必须通过执行
res.redirect(“/”
)重定向到客户端。 但整个目的是传递令牌,这样您也可以执行
res.redirect(“/?token=“+token)

但是客户端将如何获得用户实体呢? 因此,您也可以以相同的方式传递用户,但这对我来说并不合适(传递参数列表中的整个用户实体…)。 所以我所做的就是让客户端使用令牌并检索用户

    function handleNewToken(token) {
        if (!token)
            return;

        localStorageService.set('token', token);

        // Fetch activeUser
        $http.get("/api/authenticate/" + token)
            .then(function (result) {
                setActiveUser(result.data);
        });
    }
这意味着另一个http请求——这让我觉得可能我没有正确理解令牌的概念。
请随意启发我。

看看这个——它解释得非常清楚@MuliYulzary谢谢,但在您给出的示例中,我试图避免过度使用会话。您有什么解决方案吗?我也有同样的问题,我不能在Google回调重定向后设置标题。如果你不想使用session,请检查也非常有用。如果你不想使用session,请使用@Gagan。不确定它是否与讨论的问题相关,请详细说明?@chenop,因为你正在寻找无会话身份验证。passport jwt非常适合无会话的身份验证。如果任何用户来到这里,他/她将获得相关信息。
    function handleNewToken(token) {
        if (!token)
            return;

        localStorageService.set('token', token);

        // Fetch activeUser
        $http.get("/api/authenticate/" + token)
            .then(function (result) {
                setActiveUser(result.data);
        });
    }