Flask + SQLite

Python 建立網站使用心得站

整理用 Python 建網站的經驗、踩坑與實作心得,讓安裝、環境、Flask 與部署實作更容易上手。

閱讀方向

從環境建置開始,逐步整理 Flask、虛擬環境、套件管理與實戰心得。

網站管理員 ・ 2026-04-01 03:35:16 ・ 約 3 分鐘

Flask 如何做登入、Session 與權限:後台不是有表單就夠了

很多人做第一個 Flask 後台時,常常會先有登入頁、帳號欄位、密碼欄位,看起來好像就已經有後台了。但真正有沒有登入系統,不只是看有沒有表單,而是你有沒有處理 session、權限與登入狀態。也就是說,表單只是入口,真正的後台安全性還在後面。 先講 session。Session 的作用,是讓伺服器知道某個使用者已經登入過,所以之後他去看...

很多人做第一個 Flask 後台時,常常會先有登入頁、帳號欄位、密碼欄位,看起來好像就已經有後台了。但真正有沒有登入系統,不只是看有沒有表單,而是你有沒有處理 session、權限與登入狀態。也就是說,表單只是入口,真正的後台安全性還在後面。

先講 session。Session 的作用,是讓伺服器知道某個使用者已經登入過,所以之後他去看後台頁面時,不需要每次重新輸入密碼。Flask 會透過 `session` 這個物件,讓你在登入成功後記錄狀態,例如 `session['admin_logged_in'] = True`。之後再透過條件判斷,決定某些頁面能不能被存取。

這也是為什麼 `SECRET_KEY` 很重要。因為 Flask 的 session 機制需要依賴它來保護資料。如果你的 `SECRET_KEY` 太弱、寫死在公開程式碼,或一直用開發預設值,登入相關機制的風險就會提高。

再來是權限。很多小站一開始的權限需求其實不複雜,可能只有「一般訪客」和「管理者」兩種。這種情況下,最基本的作法通常是寫一個裝飾器,例如 `login_required`,讓沒有登入的人不能進後台。也就是說,登入頁不是重點,重點是後台頁面能不能被保護起來。

例如概念上你會有這種流程:

使用者送出帳號密碼
驗證成功後寫入 session
後台頁檢查 session 是否存在
沒有登入就導回登入頁

這樣的流程才算是一套基本的登入邏輯。

再往下一步,你還會碰到幾個重要問題。第一,密碼不能只用明碼比對,正式站至少要做雜湊。第二,要有登出機制,讓 session 可以清掉。第三,如果網站開始有不同角色,例如作者、編輯、管理員,那權限就不能只用一個布林值處理,而要進一步分角色。

對很多 Flask 小站來說,一開始做到最基本的 session 登入與後台保護就很有幫助了。因為這代表你的後台不再只是「看起來像後台」,而是真的有最基本的存取控制。

所以如果你正在做內容站、文章站或小型管理後台,登入系統真正要理解的,不只是表單怎麼送,而是登入成功後狀態怎麼維持、哪些頁面該限制、權限怎麼分。這些觀念一旦弄懂,之後你要擴充會員、作者系統或多角色管理就會容易很多。

回首頁