Flask Session 登入系統!
✨ 什麼是 Session?
Session 就是伺服器在「記住使用者狀態」的小技巧。
登入之後,伺服器會在你的電腦瀏覽器種一個小小的 Session ID。
這樣下次你瀏覽任何頁面,伺服器就知道「啊~這個人已經登入了」。
Flask 幫我們內建了 session 這個功能,超好用!
🛠 Step 1:先在 app.py 開啟 Session 功能
修改 app.py,加上密鑰(secret_key):
from flask import Flask, render_template, request, redirect, session, url_for
app = Flask(__name__)
app.secret_key = '這裡可以亂打,但要保密'
@app.route('/')
def index():
return render_template('login.html')
@app.route('/signin', methods=['POST'])
def signin():
username = request.form['username']
password = request.form['password']
if username == 'admin' and password == '1234':
session['user'] = username # 在 session 中記錄登入狀態
return redirect('/member')
else:
return redirect(url_for('error', message='帳號或密碼錯誤'))
@app.route('/member')
def member():
if 'user' in session:
return render_template('member.html')
else:
return redirect('/')
@app.route('/error')
def error():
message = request.args.get('message', '發生錯誤')
return render_template('error.html', message=message)
@app.route('/signout')
def signout():
session.pop('user', None) # 清除 session
return redirect('/')
if __name__ == '__main__':
app.run(debug=True)
✅ 新功能說明
session['user'] = username→ 登入時存進 Session。- 每次進
/member都會檢查if 'user' in session,沒登入就踢回首頁! /signout這個網址會登出(清除 Session),然後回首頁。
🧩 補充:會員頁 member.html 可以這樣加
可以在 member.html 裡放一個「登出」連結:
<!DOCTYPE html>
<html>
<head>
<title>會員頁</title>
</head>
<body>
<h1>歡迎 {{ session['user'] }}!你已經成功登入</h1>
<a href="/signout">登出</a>
</body>
</html>
注意:在 HTML 裡,Flask 的變數要用 {{ }} 包起來!
🔥 重點小總結
| 功能 | 說明 |
|---|---|
| 記錄登入狀態 | session['user'] = username |
| 驗證登入 | if 'user' in session |
| 登出清除 | session.pop('user', None) |
| 密鑰設定 | app.secret_key = '自己設定的秘密字串' |
請先 登入 以發表留言。