将参数从中间件传递给 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的主要内容,如果未能解决你的问题,请参考以下文章

将参数从 Android FragmentActivity 传递给 Fragment

将多个参数从 c# 传递给 python

如何将命令行参数从pytest传递给代码

如何将参数从 Flutter 传递给 Kotlin?

将参数从php中的数组传递给构造函数[重复]

Android:将参数从Activity传递给Service