下一步身份验证重定向到我的登录页面中的本地主机

问题描述 投票:0回答:1

我使用 AWS CLI、Docker、Github 在 AWS EC2 中部署我的 Nextjs 14 应用程序。 对于身份验证,我使用 next-auth。每次用户成功访问时,下一步身份验证都会将其重定向到本地主机。

.env

登录操作:

signIn('credentials', {
      email: values.email,
      password: values.password,
      callbackUrl: `${process.env.NEXTAUTH_URL}`
    })

auth.ts:

import NextAuth, { NextAuthConfig } from 'next-auth'
import CredentialsProvider from 'next-auth/providers/credentials'

export const authOptions: NextAuthConfig = {
  providers: [
    CredentialsProvider({
      async authorize(credentials, req) {
        if (!credentials.email || !credentials.password) return null
        const { email, password } = credentials
        console.log(credentials, 'credentials')
        try {
          const response = await fetch(
            'http://**********:6060/auth/signin',
            {
              method: 'POST',
              headers: {
                'Content-Type': 'application/json'
              },
              body: JSON.stringify({ email, password })
            }
          )
          const data = await response.json()
          return data
        } catch (err) {
          console.log(err)
          return null
        }
      }
    })
  ],
  session: {
    strategy: 'jwt'
  },
  trustHost: true,
  secret: process.env.AUTH_SECRET,
  callbacks: {
    jwt({ token, user }) {
      if (user) {
        return { ...token, ...user }
      }
      return token
    },
    session: ({ token, session }) => {
      session.user = token.user
      session.token = token.token
      return session
    },
    authorized({ auth }: { auth: any }) {
      return !!auth?.user // this ensures there is a logged in user for -every- request
    }
  },
  pages: {
    signIn: '/sign-in' // overrides the next-auth default signin page https://authjs.dev/guides/basics/pages
  }
}

export const {
  handlers: { GET, POST },
  auth
} = NextAuth(authOptions)

NEXTAUTH_URL 变量在容器日志中可用,但在浏览器中不可用。请参阅容器日志以获取更多信息

感谢您的帮助!

docker next.js amazon-ec2 next-auth next.js14
1个回答
0
投票

如果您想在浏览器中从 nextjs 后端获得可用的环境变量,则必须添加前缀

NEXT_PUBLIC_
。请参阅为浏览器捆绑环境变量

© www.soinside.com 2019 - 2024. All rights reserved.