Rumah > pembangunan bahagian belakang > Tutorial Python > Cara menggunakan Flask-Login untuk melaksanakan log masuk pengguna dan pengurusan sesi

Cara menggunakan Flask-Login untuk melaksanakan log masuk pengguna dan pengurusan sesi

PHPz
Lepaskan: 2023-08-02 17:57:15
asal
1705 orang telah melayarinya

Cara menggunakan Flask-Login untuk melaksanakan log masuk pengguna dan pengurusan sesi

Pengenalan:
Flask-Login ialah pemalam pengesahan pengguna untuk rangka kerja Flask, yang melaluinya kami boleh melaksanakan log masuk pengguna dan fungsi pengurusan sesi dengan mudah. Artikel ini akan memperkenalkan cara menggunakan Flask-Login untuk log masuk pengguna dan pengurusan sesi, dan memberikan contoh kod yang sepadan.

1. Persediaan
Sebelum menggunakan Flask-Login, kita perlu memasangnya dalam projek Flask. Anda boleh menggunakan pip untuk memasangnya dengan arahan berikut:

pip install Flask-Login
Salin selepas log masuk

2. Buat aplikasi Flask dan konfigurasikannya
Pertama, kita perlu mencipta aplikasi Flask dan konfigurasikannya dengan sewajarnya. Tulis kod berikut dalam app.py:

from flask import Flask
from flask_login import LoginManager

app = Flask(__name__)
# 配置SECRET_KEY,用于加密会话数据
app.config['SECRET_KEY'] = 'your-secret-key'

login_manager = LoginManager(app)
Salin selepas log masuk

Antaranya, LoginManager digunakan untuk mengurus log masuk dan sesi SECRET_KEY dikonfigurasikan melalui app.config['SECRET_KEY'] untuk menyulitkan data sesi, yang boleh menjadi rentetan rawak.

3 Buat model pengguna
Seterusnya, kita perlu mencipta model pengguna untuk menyimpan maklumat pengguna, seperti nama pengguna, kata laluan, dll. Tulis kod berikut dalam app.py:

from flask_login import UserMixin

class User(UserMixin):
    def __init__(self, id):
        self.id = id
        self.username = None
        self.password = None
    
    def get_id(self):
        return str(self.id)
Salin selepas log masuk

Di sini kami memudahkan pelaksanaan model pengguna dengan mewarisi kelas UserMixin dan melaksanakan kaedah get_id untuk mengembalikan pengecam unik pengguna.

4. Tulis paparan log masuk
Seterusnya, kita perlu menulis paparan log masuk untuk mengendalikan permintaan log masuk pengguna. Tulis kod berikut dalam app.py:

from flask import request, redirect, url_for, render_template
from flask_login import login_user

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        
        # 验证用户名和密码
        user = User(1)  # 根据用户名和密码查询数据库获取用户对象
        if user.username == username and user.password == password:
            login_user(user)  # 登录用户
            return redirect(url_for('index'))
        
        return render_template('login.html', error='用户名或密码错误')
    
    return render_template('login.html')
Salin selepas log masuk

Di sini, request.form.get digunakan untuk mendapatkan nama pengguna dan kata laluan dalam permintaan pengguna, dan kemudian sahkan sama ada nama pengguna dan kata laluan adalah betul mengikut situasi sebenar. Jika betul, panggil fungsi login_user untuk log masuk ke pengguna, dan ulangi Diarahkan ke halaman utama.

5. Tulis kod berkaitan pengurusan sesi
Dalam kod di atas, kami menggunakan fungsi login_user Flask-Login untuk melaksanakan log masuk pengguna. Seterusnya, kita juga perlu menulis beberapa kod untuk melaksanakan fungsi berkaitan pengurusan sesi.

  1. Fungsi panggil balik kejayaan log masuk

    from flask_login import login_user, login_required, logout_user, current_user
    
    @login_manager.user_loader
    def load_user(user_id):
     return User(int(user_id))
    Salin selepas log masuk

    @login_manager.penghias pengguna_loader akan digunakan oleh Flask-Login untuk memuatkan objek pengguna. Dalam fungsi pemuatan ini, kami mengembalikan objek pengguna berdasarkan pengecam unik pengguna.

  2. Fungsi paparan dilindungi

    @app.route('/')
    @login_required
    def index():
     return 'Hello, {}!'.format(current_user.username)
    Salin selepas log masuk

    @login_required pengubah akan melindungi fungsi paparan indeks, dan hanya pengguna log masuk boleh mengakses paparan.

  3. Paparan Log Keluar

    @app.route('/logout')
    @login_required
    def logout():
     logout_user()  # 登出用户
     return redirect(url_for('login'))
    Salin selepas log masuk

    Pengguna log keluar pengguna yang sedang log masuk dengan mengakses laluan /logout.

6. Buat halaman log masuk
Akhir sekali, kita perlu mencipta halaman log masuk, mencipta fail login.html dalam direktori templat, dan tulis kod berikut:

{% if error %}
<p style="color: red;">{{ error }}</p>
{% endif %}
<form method="post" action="{{ url_for('login') }}">
    <input type="text" name="username" placeholder="用户名" required>
    <input type="password" name="password" placeholder="密码" required>
    <button type="submit">登录</button>
</form>
Salin selepas log masuk

Dalam halaman log masuk, kami memaparkan ralat mesej dan sediakan kotak Input untuk nama pengguna dan kata laluan, dan butang log masuk.

7 Jalankan aplikasi
Pada ketika ini, kami telah melengkapkan semua kod untuk log masuk pengguna dan pengurusan sesi menggunakan Flask-Login. Jalankan aplikasi dan akses laluan /login untuk memasuki halaman log masuk untuk log masuk pengguna.

Ringkasan:
Artikel ini memperkenalkan cara menggunakan Flask-Login untuk melaksanakan log masuk pengguna dan pengurusan sesi, dan menyediakan contoh kod yang sepadan. Menggunakan Flask-Login boleh mengurus log masuk dan sesi pengguna dengan mudah, meningkatkan keselamatan aplikasi dan pengalaman pengguna. Saya harap artikel ini akan membantu anda mempelajari Flask-Login.

Atas ialah kandungan terperinci Cara menggunakan Flask-Login untuk melaksanakan log masuk pengguna dan pengurusan sesi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan