小编Dim*_*ers的帖子

由于 _middleware.ts 中的 jsonwebtoken,Nextjs 构建失败

希望获得有关 Vercel 部署的一些帮助。我创建了一个 _middleware.ts 文件,用于检查用户 cookie 中的 JWT。

import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
import { JwtPayload, verify } from 'jsonwebtoken'

export async function middleware(req: NextRequest) {
  let response = NextResponse.next()
  const url = req.nextUrl.clone()

  const token = req.cookies['allow-list']

  if (!token || token === 'deleted') {
    return response 
  }

  try {
    const decodedToken = verify(
      token,
      process.env.TOKEN_SECRET as string
    ) as JwtPayload
  } catch (e) {}

  return response
}
Run Code Online (Sandbox Code Playgroud)

但是,正因为如此,当我尝试构建项目时,出现以下错误:“中间件页面/_middleware 中不允许动态代码评估(例如“eval”、“新函数”)”。有没有解决的办法?当我在本地运行它时它有效。

[22:59:29.409] Cloning …
Run Code Online (Sandbox Code Playgroud)

javascript next.js vercel edge-function

7
推荐指数
2
解决办法
4233
查看次数

钱包和 JsonRpcSigner 有什么区别?

在以太坊文档中,它说两个最常见的签名者是:

Wallet,这是一个知道其私钥并可以用它执行任何操作的类。

JsonRpcSigner,连接到 JsonRpcProvider (或子类)并使用 getSigner 获取

我无法理解的是,当提供者是 web3provider(即 MetaMask)时,如何创建 JsonRpcSigner。难道 web3provider 不知道它的私钥,因此应该在provider.getSigner()运行时返回一个钱包吗?

ethereum decentralized-applications ethers.js

6
推荐指数
1
解决办法
2616
查看次数

铁会话和下一个身份验证之间的区别?

为什么要使用iron-session而不是next-auth?除了社交之外,next-auth 是否不执行正常的用户名/密码登录(而iron-session 只执行前者)?

authentication session authorization next.js next-auth

6
推荐指数
1
解决办法
9156
查看次数

如何使用 TypeScript 在 Next.js 中的每页布局中使用 next-auth?

我当前的代码如下,它遵循 Next.js 每页getLayout的教程(请参阅 TypeScript 部分)和带有 TypeScript 的NextAuth(或者我应该说,尝试遵循...):

import "../styles/globals.css";
import type { AppProps } from "next/app";
import { SessionProvider } from "next-auth/react";
import { Session } from "next-auth";
import Header from "components/Header";
import { ReactElement, ReactNode } from "react";
import { NextPage } from "next";

type NextPageWithLayout<P = {}, IP = P> = NextPage<P, IP> & {
  getLayout?: (page: ReactElement) => ReactNode;
};

type AppPropsWithLayout = AppProps & {
  Component: NextPageWithLayout;
};

function MyApp({ Component, pageProps …
Run Code Online (Sandbox Code Playgroud)

typescript next.js next-auth

6
推荐指数
1
解决办法
4799
查看次数

在使用 useQuery() 之前如何等待下一个身份验证会话?

我有一个 NextJS 项目,它使用 NextAuth 进行会话管理,然后使用 React Query 来检索前端数据。

但是,使用当前格式(如下所示), useSession() 将undefined在检查会话是否已通过身份验证时返回,然后undefined在reactQuery中使用它,它本身将返回undefined. 如何确保仅在成功检索会话并包含 userID 之后才调用 useQuery,然后将其传递给 useQuery?

const AirdropsPage = () => {
  const { data: session } = useSession();

  const { isLoading, isError, data } = useQuery(["airdropsData"], () =>
    fetch(`/api/airdrops?id=${session?.user?.id}`).then((res) => res.json()) //id is undefined
  );

  return (
    {isLoading ? (
      <Loader />
    ) : data ? (
      <Table data={data.airdrops} columns={columns} />
    ) : null}
  );
};
Run Code Online (Sandbox Code Playgroud)

node.js reactjs next.js react-query next-auth

1
推荐指数
1
解决办法
3423
查看次数