在使用Python編寫Web應(yīng)用程序時(shí),我們經(jīng)常需要實(shí)現(xiàn)登錄功能。但是,一旦用戶登錄成功,他們可能會(huì)離開(kāi)網(wǎng)站或關(guān)閉瀏覽器。為了保持用戶的登錄狀態(tài),我們需要實(shí)現(xiàn)一種機(jī)制,使得用戶在一段時(shí)間內(nèi)不需要重新登錄。這種機(jī)制通常稱為“登錄狀態(tài)保持”。
實(shí)現(xiàn)登錄狀態(tài)保持的一種常見(jiàn)方式是使用Cookie。當(dāng)用戶登錄時(shí),我們將其認(rèn)證信息存儲(chǔ)在Cookie中。在用戶下一次訪問(wèn)我們的網(wǎng)站時(shí),我們可以從Cookie中檢索出這些信息,以便自動(dòng)登錄他們。
from flask import Flask, request, redirect, session app = Flask(__name__) app.config['SECRET_KEY'] = 'your-secret-key' @app.route('/login', methods=['POST']) def login(): username = request.form['username'] password = request.form['password'] if username == 'admin' and password == 'password': session['username'] = username return redirect('/dashboard') else: return 'Invalid username or password' @app.route('/dashboard') def dashboard(): if 'username' in session: return f'Welcome {session["username"]}' else: return redirect('/login')
在這個(gè)例子中,我們創(chuàng)建了一個(gè)名為app
的Flask實(shí)例,并使用app.config['SECRET_KEY']
設(shè)置了一個(gè)秘密密鑰。當(dāng)用戶成功登錄時(shí),我們將其用戶名存儲(chǔ)在session
中,并重定向到儀表板頁(yè)面。在儀表板頁(yè)面上,我們檢查session
中是否有用戶名。如果是,我們歡迎用戶;否則,我們將他們重定向回登錄頁(yè)面。
最后,我們需要設(shè)置應(yīng)用程序的Cookie設(shè)置,以確保Cookie為持久性Cookie:
app.config['SESSION_COOKIE_NAME'] = 'your-cookie-name' app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
在這里,我們將我們的Cookie命名為your-cookie-name
,并設(shè)置了Cookie的生命周期為7天。這樣,一旦用戶登錄成功,他們?cè)诮酉聛?lái)的7天內(nèi)將不需要重新登錄。