Flask - Phiên
Giống như Cookie, dữ liệu Phiên được lưu trữ trên máy khách. Phiên là khoảng thời gian khi khách hàng đăng nhập vào máy chủ và đăng xuất khỏi nó. Dữ liệu, cần được lưu giữ trong phiên này, được lưu trữ trong trình duyệt máy khách.
Một phiên với mỗi khách hàng được chỉ định một Session ID. Dữ liệu Phiên được lưu trữ trên cookie và máy chủ ký chúng bằng mật mã. Để mã hóa này, ứng dụng Flask cần cóSECRET_KEY.
Đối tượng phiên cũng là một đối tượng từ điển chứa các cặp khóa-giá trị của các biến phiên và các giá trị liên quan.
Ví dụ, để đặt một ‘username’ biến phiên sử dụng câu lệnh -
Session[‘username’] = ’admin’
Để phát hành một biến phiên sử dụng pop() phương pháp.
session.pop('username', None)
Đoạn mã sau đây là một minh chứng đơn giản về hoạt động của phiên trong Flask. URL‘/’ chỉ cần nhắc người dùng đăng nhập, dưới dạng biến phiên ‘username’ không được thiết lập.
@app.route('/')
def index():
if 'username' in session:
username = session['username']
return 'Logged in as ' + username + '<br>' + \
"<b><a href = '/logout'>click here to log out</a></b>"
return "You are not logged in <br><a href = '/login'></b>" + \
"click here to log in</b></a>"
Khi người dùng duyệt đến '/ login', hàm xem login (), vì nó được gọi thông qua phương thức GET, sẽ mở ra một biểu mẫu đăng nhập.
Một biểu mẫu được đăng trở lại ‘/login’và bây giờ biến phiên được thiết lập. Ứng dụng được chuyển hướng đến‘/’. Biến phiên thời gian này‘username’ được tìm thấy.
@app.route('/login', methods = ['GET', 'POST'])
def login():
if request.method == 'POST':
session['username'] = request.form['username']
return redirect(url_for('index'))
return '''
<form action = "" method = "post">
<p><input type = text name = username/></p>
<p<<input type = submit value = Login/></p>
</form>
'''
Ứng dụng này cũng chứa một logout() chức năng xem, bật ra ‘username’biến phiên. Vì thế,‘/’ URL lại hiển thị trang mở đầu.
@app.route('/logout')
def logout():
# remove the username from the session if it is there
session.pop('username', None)
return redirect(url_for('index'))
Chạy ứng dụng và truy cập trang chủ. (Đảm bảo đặtsecret_key của ứng dụng)
from flask import Flask, session, redirect, url_for, escape, request
app = Flask(__name__)
app.secret_key = 'any random string’
Kết quả sẽ được hiển thị như hình dưới đây. Nhấp vào liên kết“click here to log in”.
Liên kết sẽ được dẫn đến một màn hình khác. Nhập 'admin'.
Màn hình sẽ hiển thị cho bạn thông báo, ‘Logged in as admin’.