使用 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 实现凭据授权?