Bedingtes Rendern von Next.js-basierten Komponenten: Wie kann man davon ausgehen, ob die Anfrage von einem authentifizierten Firebase-Benutzer kommt?
P粉616111038
2023-08-26 14:39:52
<p><strong>Hinweis: </strong>Ich verwende Next.js 13 und das Verzeichnis <code>app/</code> </p>
<hr />
<p>Ich lerne Firebase und Next.js und versuche zu verstehen, wie man ein Spielzeugproblem löst. Nehmen wir an, ich habe eine <code>Home()</code>Component</p>
<p><strong><code>/app/page.jsx</code></strong></p>
<pre class="brush:php;toolbar:false;">Standardfunktion exportieren Home() {
zurückkehren (
<Haupt>
<h1>Hallo Welt</h1>
<p>Nur authentifizierte Benutzer können diesen Text sehen</p>
</main>
)
}</pre>
<p>Mein Ziel ist es, alles bedingt in <code><p>...</p></code> darzustellen, basierend darauf, ob der Benutzer, der die Seite anfordert, ein angemeldeter Benutzer ist. Firebase rendert diese Komponente serverseitig mit JWT, Next.js 13, daher glaube ich, dass dies möglich ist, aber ich weiß nicht, wie das geht. </p>
<p>Ich kenne onAuthStateChanged, aber meines Wissens kann dies nur auf der Clientseite verwendet werden. (Versierte Benutzer können diesen geschützten Inhalt weiterhin anzeigen.) Wie schütze ich diesen Inhalt <em>serverseitig</em>? </p>
要检查用户是否已登录,您可以使用'onAuthStateChanged'方法。
将此信息存储在组件的状态中,或者使用它来有条件地渲染组件的部分。
要在服务器端执行用户身份验证,Next.js提供了'getServerSideProps'来获取用户的身份验证状态
更新的解决方案:
创建一个服务器端路由
客户端代码