首页 > 解决方案 > 检查身份验证服务器端并在未经身份验证时重定向

问题描述

我希望我的 NEXTJS 项目检查 cookie 标头(仅限 http)并验证 JWT 服务器端。我想以 302 重定向响应 /login 以防用户未登录。这个逻辑通常会去哪里?我尝试将它放在_app.js'sgetInitialProps中,但这似乎会严重破坏除了初始页面渲染之外的东西。将逻辑移至_document.js'sgetInitialProps似乎可以解决问题,但我不确定这是一个好习惯吗?如果要求之一是除非经过身份验证,否则不应给出 html/js/css 响应,您会将它放在哪里?提前致谢!:)

标签: javascriptreactjsnext.js

解决方案


我认为您可以参考此https://github.com/vercel/next.js/tree/canary/examples/with-iron-session并稍作修改:

注意:这是一个官方示例,据说在 Next.js 中使用最佳实践进行身份验证。

我在几个真实世界的例子中遇到过类似的例子,客户端向身份验证服务器请求并获取 JWT 令牌,然后将此令牌传递给 Next.js req.cookie 以进行会话处理。我不喜欢的是我们必须在 Next.js 的服务器端提供解码 JWT 的秘密


推荐阅读