3

我已经在文档中实现了下一个身份验证,当我转到 http://localhost:3001/api/auth/signin 时,我看到了这个 在此处输入图像描述

在此之后,当我单击使用 google 或 github 登录时,我页面刷新并被重定向到http://localhost:3001/api/auth/signin?csrf=true之后没有任何反应。它是同一页。

我的 [...nextauth.js] 文件

    import NextAuth from "next-auth";
import Providers from "next-auth/providers";

export default NextAuth({
    providers: [
        Providers.Google({
            clientId: process.env.GOOGLE_CLIENT,
            clientSecret: process.env.GOOGLE_KEY,
        }),
        Providers.GitHub({
            clientId: process.env.GITHUB_CLIENT,
            clientSecret: process.env.GITHUB_SECRET,
        }),
    ],
});

任何想法,为什么它不起作用

我觉得它与我的节点快递服务器有关,代码是

const express = require("express");
const app = express();
const server = require("http").createServer(app);
const next = require("next");
const nextApp = next({ dev: true });
const nextHandler = nextApp.getRequestHandler();


/*******************ROUTES****************/
const userRoutes = require("./server/routes/user");

nextApp.prepare().then(() => {
    app.use("/node/user", userRoutes);
    app.all("*", (req, res) => nextHandler(req, res));
    server.listen(3001, err => {
        if (err) throw err;
        console.log("> ---------Server is ready on port 3001------------");
    });
});
4

1 回答 1

0

我有类似的东西,也使用自定义快递服务器。只要是假的,看看next-auth/dist/server/index.js你最终会点击那个重定向。csrfTokenVerified就我而言,csrf 令牌是随signin/[provider]请求一起发送的。我认为客户端发送的是 urlencoded 请求正文,而这不是由 express 服务器解析的,因此从未将其发送到下一个身份验证服务器端点。我使用节点包修复了它bodyparser并将这一行添加到我的快速服务器设置app.use(urlencoded({ extended: true }));中。我在下一个 v9 中没有这个问题,但在较新的版本中出现了。

于 2022-02-24T13:41:39.857 回答