Kai*_*oze 2 javascript next.js next-auth
我正在构建一个 NextJS 应用程序,并且我有一系列pages/dashboard/*想要保护的路由器。我正在使用 Prisma,但目前我想做的是仅当用户登录时才能够访问路由。我正在使用 Google 提供商,并且一切都设置正确。这是我的中间件.ts
export { default } from "next-auth/middleware"
export const config = { matcher: ["/dashboard"] }Run Code Online (Sandbox Code Playgroud)
很简单。这是我的 [...nextAuth] 文件
从“next-auth”导入NextAuth,{NextAuthOptions}从“next-auth/providers/google”导入GoogleProvider从“@next-auth/prisma-adapter”导入{PrismaAdapter}从“@/lib/db”导入{prisma} /棱镜”
export const authOptions: NextAuthOptions = {
adapter: PrismaAdapter(prisma),
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID as string,
clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,
authorization: {
params: {
prompt: "consent",
access_type: "offline",
response_type: "code",
},
},
}),
],
}
export default NextAuth(authOptions)Run Code Online (Sandbox Code Playgroud)
我的秘密位于 .env.local 中,还有本地创建的 NEXTAUTH_SECRET 。我面临的问题是,每当用户进入仪表板时,它都会被重定向到登录名,一旦您登录,该页面仍然无法访问,并且不断要求登录。我注意到它useSession返回浏览器中的数据,但显然节点端的令牌或会话为空。我已经Next 13.2.4解决了Next Auth ^4.20.1
,但我无法弄清楚为什么不起作用,我尝试了其他问题中提出的所有解决方案,但没有一个有效,而且我无法看到仪表板。有什么帮助吗?谢谢
找到了解决方案,对于那些可能处于相同情况的人:我将该策略添加到下一个身份验证选项中:
session: {
strategy: "jwt",
},
Run Code Online (Sandbox Code Playgroud)
现在可以了。
| 归档时间: |
|
| 查看次数: |
2412 次 |
| 最近记录: |