有條件地渲染基於Next.js的元件:如何根據請求是否來自已驗證的Firebase使用者?
P粉616111038
2023-08-26 14:39:52
<p><strong>注意:</strong>我正在使用Next.js 13和<code>app/</code>目錄。 </p>
<hr />
<p>我正在學習Firebase和Next.js,我正在努力理解如何解決一個玩具問題。假設我有一個像這樣的<code>Home()</code>組件</p>
<p><strong><code>/app/page.jsx</code></strong></p>
<pre class="brush:php;toolbar:false;">export default function Home() {
return (
<main>
<h1>Hello World</h1>
<p>只有經過驗證的使用者才能看到這段文字</p>
</main>
)
}</pre>
<p>我的目標是根據請求頁面的使用者是否為已登入使用者有條件地渲染<code><p>...</p></code>中的所有內容。 Firebase使用JWT,Next.js 13在伺服器端呈現此元件,所以我相信這是可能的,但我無法弄清楚如何做到這一點。 </p>
<p>我知道onAuthStateChanged,但據我所知,這只能在客戶端使用。 (精明的用戶仍然可以查看這些受保護的內容。)我如何在<em>伺服器端</em>保護這些內容? </p>
要檢查使用者是否已登錄,您可以使用'onAuthStateChanged'方法。
將此資訊儲存在元件的狀態中,或使用它來有條件地渲染元件的部分。
要在伺服器端執行使用者驗證,Next.js提供了'getServerSideProps'來取得使用者的驗證狀態
更新的解決方案:
建立一個伺服器端路由
客戶端程式碼