如何解码next-auth jwt令牌以获取用于RTK查询的access_token

qhhrdooz  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(141)

我正在使用next-auth.js进行身份验证,并且成功实现了凭据登录方法,成功验证后,jwt将存储在cookie中。
是否有办法检索此cookie,对其进行解码并取出我存储在其中的access_token,以便在使用RTK查询的外部API调用中使用?我不希望在会话中提供此令牌
下面是我的next-auth.js配置文件

import NextAuth from "next-auth/next";
import CredentialsProvider from "next-auth/providers/credentials";

export default NextAuth({
  providers: [
    CredentialsProvider({
      type: "credentials",
      credentials: {},
      authorize: async (user) => {
        return user;
      },
    }),
  ],
  pages: {
    signIn: "/login",
  },
  callbacks: {
    jwt: async ({ token, user }) => {
      if (user) {
        token.access_token = user.token;
        token.id = user.id;
      }

      return token;
    },
    session: async ({ session, token }) => {
      if (token) {
        session.id = token.id;
      }
      return session;
    },
  },
  session: {
    strategy: "jwt",
  },
});
u1ehiz5o

u1ehiz5o1#

有一个内置的helper方法getToken()可以实现这一点

import { getToken } from "next-auth/jwt";
const secret = 'MY_SECRET';

export default async function handler(req, res) { 
  const token = await getToken({ req, secret })
  console.log("JSON Web Token", token)
  res.end()
}

如果使用NEXTAUTH_SECRET env变量,我们会检测到它,实际上不需要secret

export default async function handler(req, res) { 
  const token = await getToken({ req })
  console.log("JSON Web Token", token)
  res.end()
}

相关问题