<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ssr on BenzHub</title><link>https://benzhub.github.io/tags/ssr/</link><description>Recent content in Ssr on BenzHub</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Mon, 12 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://benzhub.github.io/tags/ssr/index.xml" rel="self" type="application/rss+xml"/><item><title>Supabase MFA 與 SSR：多因子驗證與伺服器端渲染 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/023-auth-mfa-ssr/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/023-auth-mfa-ssr/</guid><description>&lt;blockquote&gt;
&lt;p&gt;前面幾篇我們把「怎麼進門」講完了——&lt;strong&gt;email 密碼&lt;/strong&gt;、&lt;strong&gt;OAuth&lt;/strong&gt;、&lt;strong&gt;Magic Link 與 OTP&lt;/strong&gt;，全都通往同一組 session。這一篇談「進門之後怎麼守得更穩」：先幫登入加上&lt;strong&gt;第二道防線&lt;/strong&gt;，也就是 &lt;strong&gt;MFA（多因子驗證）／TOTP&lt;/strong&gt;，用 &lt;code&gt;enroll&lt;/code&gt;／&lt;code&gt;challenge&lt;/code&gt;／&lt;code&gt;verify&lt;/code&gt; 三步把 session 從 &lt;strong&gt;AAL1&lt;/strong&gt; 升級成 &lt;strong&gt;AAL2&lt;/strong&gt;，再用 &lt;strong&gt;RLS&lt;/strong&gt; 依 &lt;code&gt;aal&lt;/code&gt; 限制高敏感操作；接著處理 &lt;strong&gt;SSR&lt;/strong&gt;——用 &lt;code&gt;@supabase/ssr&lt;/code&gt; 以 &lt;strong&gt;cookie&lt;/strong&gt; 保管 session，靠 &lt;strong&gt;middleware&lt;/strong&gt; 在每個請求刷新 token，伺服器端一律用 &lt;code&gt;getUser()&lt;/code&gt; 而非 &lt;code&gt;getSession()&lt;/code&gt; 做授權。這是整個 Auth 段的收尾。&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>