You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NextAuth实现NextJS短信验证码授权遇问题求助

Next.js 验证码授权功能实现问题

我需要在Next.js中实现授权功能,流程为:将发送至手机号的验证码通过Next.js发送给后端API,从API获取用户数据、access token和refresh token。我使用了next-auth库,但在实现过程中遇到问题。

相关代码

[...nextauth].js

import { AuthOptions } from "next-auth";
import NextAuth from "next-auth/next";
import CredentialsProvider from "next-auth/providers/credentials";
import axios from "../../lib/axios";

export const authOptions: AuthOptions = {  
  providers: [
    CredentialsProvider({
      name: "Credentials",
      credentials: {
        code: {
          label: "code",
          type: "text",
          placeholder: "code",
        },
      },

      async authorize(credentials, req){        
        const res = await axios({
            method: "post",
            url: "/reg/verify",
            data: {
                code: credentials?.code
            }
        })
        const user = res.data

        if(user){
            return user
        }
        else {
            return null
        }
      }
    }),
  ],
  callbacks: {
    async session({session, token}){
      session.user == token;
      return session
    },
    async jwt({token, user}){
      if(user){
        token = {... token, ...user}
      }
      return token
    }
  }
};
export default NextAuth(authOptions)

登录函数

const { data: session, status } = useSession()  

const onSubmit: SubmitHandler<Inputs> = async (data) => {
   const result = await signIn("Credentials", {
      code: data.code,
      redirect: true,
      callbackUrl: 'http://localhost:3000/app'
    })
}

(附错误截图说明)

我的文件结构如下:


内容的提问来源于stack exchange,提问作者Ravshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:25:05