因此,我实现了Next-Auth,并添加了一个中间件,如果用户通过了身份验证,它将禁用/register和/login路由。但是如果用户没有经过身份验证并想要注册,他们就不能访问/register路由并被转发到/login。
import { getToken } from 'next-auth/jwt'
import { withAuth } from 'next-auth/middleware'
import { NextFetchEvent, NextRequest, NextResponse } from 'next/server'
export default async function middleware(
req: NextRequest,
event: NextFetchEvent
) {
const token = await getToken({ req })
const isAuthenticated = !!token
if (req.nextUrl.pathname.startsWith('/login') && isAuthenticated) {
return NextResponse.redirect(new URL('/profile', req.url))
}
const authMiddleware = await withAuth({
pages: {
signIn: `/login`,
},
})
// @ts-expect-error
return authMiddleware(req, event)
}
export const config = {
matcher: ['/login', '/register'],
}
尝试了一些if
检查的变化,并与matcher
玩,但问题仍然存在。
1条答案
按热度按时间wwtsj6pe1#
这解决了它。