如何在Nextjs中从中间件获取数据



我正试图在nextjs中使用jwt创建一个身份验证系统。因此,我构建了一个中间件,可以验证jwt令牌,并使用它来建立这样的身份验证系统:

export default function middleware(request, event) {
const token = request.cookies.token
let authenticated = false
if (pathname === '/dashboard') {
if (token) {
try {
jwt.verify(token, 'HvpkPMarcwoZFAo')
authenticated = true
} catch {
return NextResponse.redirect('/signin')
}
} else {
return NextResponse.redirect('/signin')
}
}
}

根据上面的代码,如果用户没有登录,他将被重定向到登录页面。

但问题是,我希望一些组件根据身份验证进行更改(例如,不显示登录用户的注册按钮(。我可以从这个中间件中获取数据(例如布尔值(用于不同的组件吗?我在Expressjs中使用了response.locals。Nextjs中有类似的解决方案吗?

您应该看看https://nextjs.org/docs/basic-features/data-fetching#getserversideprops-服务器端呈现

getServerSideProps接收params中的上下文;(

最新更新