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 = '自己設定的秘密字串'
創作者介紹
創作者 劉老師的跨域創想工坊 的頭像
liusming

劉老師的跨域創想工坊

liusming 發表在 痞客邦 留言(0) 人氣( 5 )