将参数从中间件传递给 getStaticServerProps
Posted
技术标签:
【中文标题】将参数从中间件传递给 getStaticServerProps【英文标题】:Pass params from middleware to getStaticServerProps 【发布时间】:2022-01-12 16:59:34 【问题描述】:上一个问题之后的一个新问题有点混乱。
我想使用getStaticProps
静态呈现我的页面,同时在请求期间从我的 jwt(httponly cookie)获取用户。
我在网上阅读的大多数答案都使用getServerSideProps
,但这不是我想要的,因为这意味着该页面不能像静态页面一样被预渲染/缓存。我不太明白为什么这会被广泛推广为首选解决方案。
进行 ajax 调用以获取经过身份验证的用户是愚蠢的 IMO。我什至不想走这条路。谁希望微调器看到经过身份验证的用户?在每一页上?
使用中间件可以验证 cookie 并在需要时重定向到 /login
,但您不能在请求时将 props 传递给静态页面。
这个用例似乎很常见,以至于我有点困惑,我无法找到组合来正确使用它。 也许我遗漏了一些明显的东西。 有什么建议吗?
如果没有其他选择,我不得不在请求时对每个页面进行服务器渲染,因为我无法从我的令牌中获取用户。
【问题讨论】:
【参考方案1】:毕竟 lmao,我会选择选项 2。
原因是它涉及一个只需要在页面加载后发生一次的轻量级请求,我可以在全局上下文中加载后从***组件调用它。
由于中间件已经检查重定向,重定向到/login
已经可以省略。
这可以让我的静态页面保持快速渲染并应用增量静态重新生成。
这比服务器渲染所有内容要好,这通常是建议的。 我不知道为什么很多教程建议调用 api 并在服务器上的每个请求上构建页面,因为否则您无法缓存静态页面。
我个人觉得通过中间件在请求时解析jwt会更好,但我会活下来。
【讨论】:
以上是关于将参数从中间件传递给 getStaticServerProps的主要内容,如果未能解决你的问题,请参考以下文章