使用 Next-Auth 进行身份验证时如何修复内部服务器错误

Posted

技术标签:

【中文标题】使用 Next-Auth 进行身份验证时如何修复内部服务器错误【英文标题】:How do i fix an internal server error when authenticating with Next-Auth 【发布时间】:2020-11-06 06:24:12 【问题描述】:

我正在尝试使用 Next-Auth 向我的 Next.js 项目添加身份验证,但是在提交凭据 (http://localhost:3000/api/auth/error?error=Configuration) 后我卡在了 500 internal server error

我认为这可能与在 http://localhost:3000 上运行有关,但我不确定。谁能看到我做错了什么?

pages/api/auth/[...nextauth].js

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

const options = 
  site: 'http://localhost:3000',

  providers: [
    Providers.Credentials(
      name: 'Credentials',
      credentials: 
        username:  label: 'Username', type: 'text', placeholder: 'jsmith' ,
        password:  label: 'Password', type: 'password' ,
      ,
      authorize: async (credentials) => 
        consol.log('credentials', credentials);
        const user =  id: 1, name: 'J Smith', email: 'jsmith@example.com' ;
        if (user) 
          return Promise.resolve(user);
         else 
          return Promise.resolve(null);
        
      ,
    ),
  ],
  database: process.env.MONGO_URI,
;

export default (req, res) => NextAuth(req, res, options);

pages/index.js

import  useSession  from 'next-auth/client';

export default function Home() 
  const [session, loading] = useSession();
  console.log('session', session);

  return (
    <div className="container">
      <main>
          session && <p>Signed in as session.user.email</p>
          !session && (
            <p>
              <a href="/api/auth/signin">Sign in</a>
            </p>
          )
      </main>
    </div>
  );

pages/_app.js

import  Provider  from 'next-auth/client';
import '../styles.css';

export default ( Component, pageProps ) => 
  const  session  = pageProps;
  return (
    <Provider options= site: process.env.SITE  session=session>
      <Component ...pageProps />
    </Provider>
  );
;

next.config.js

module.exports = 
  env: 
    MONGO_URI: '...',
    SITE: 'http://localhost:3000',
  ,
;

任何帮助将不胜感激。

【问题讨论】:

Philip Loosemore 在回答中指出,在代码的第一部分有一个错字,其中console.log 写成consol.log。他们表示这个错字可能会导致您看到的错误。 您找到问题所在了吗?谢谢 @Armel 我真的不记得了,那是很久以前的事了。我认为这可能是 JWT 的问题(或者我没有使用 JWT 的事实!)。或者可能是上面提到的consol.log 问题Jason 不用担心@ThomasAllen,谢谢 :) 【参考方案1】:

在你的pages/api/auth/[...nextauth].js 添加:

secret:process.env.SECRET

SECRET 必须是这样的任何字符串值:

SECRET:LlKq6ZtYbr+hTC073mAmAh9/h2HwMfsFo4hrfCx6gts=

还将它添加到您的 vercel 环境中。 就这样,你的问题就解决了。

【讨论】:

这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于使用 Next-Auth 进行身份验证时如何修复内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

具有自定义后端的 Next-auth 自定义身份验证提供程序

使用 next-auth 时,如何从浏览器调用我的 Cognito 安全 Rest API?

如何在 Next.js 中使用 next-auth 实现凭据授权?

NextJs 身份验证与针对 DRF 的 Next-Auth

如何保护 Next.js next-auth 中的路由?

在 next-auth 中制作自定义电子邮件登录页面时找不到“next-auth/react”模块