Rumah > pembangunan bahagian belakang > Tutorial Python > Pengaturcaraan pelayan Python: menggunakan Flask-Login untuk melaksanakan log masuk pengguna

Pengaturcaraan pelayan Python: menggunakan Flask-Login untuk melaksanakan log masuk pengguna

WBOY
Lepaskan: 2023-06-18 16:40:59
asal
2030 orang telah melayarinya

Pengaturcaraan pelayan Python: Menggunakan Flask-Login untuk melaksanakan log masuk pengguna

Dengan pembangunan dan populariti aplikasi web, log masuk pengguna telah menjadi fungsi penting untuk banyak aplikasi. Dalam pengaturcaraan pelayan Python, Flask ialah rangka kerja pembangunan web yang digunakan secara meluas. Selain itu, Flask juga menyediakan banyak sambungan pihak ketiga, seperti Flask-Login, yang boleh membantu kami melaksanakan fungsi log masuk pengguna dengan cepat.

Artikel ini akan memperkenalkan cara menggunakan sambungan Flask-Login untuk melaksanakan fungsi log masuk pengguna dalam pelayan Python. Sebelum itu, kita perlu memasang sambungan Flask dan Flask-Login. Anda boleh menggunakan arahan pip untuk memasang:

pip install Flask Flask-Login
Salin selepas log masuk

Sekarang mari kita mula melaksanakan sistem log masuk pengguna kami.

  1. Mencipta aplikasi Flask

Pertama, kita perlu mencipta aplikasi Flask. Cipta fail app.py dalam direktori akar dan tulis kod berikut di dalamnya:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello World!"

if __name__ == "__main__":
    app.run(debug=True)
Salin selepas log masuk

Dalam contoh ini, kami telah mencipta aplikasi Flask dan menentukan laluan root mengembalikan "Hello World !". Kami juga menggunakan __name__ == "__main__" pernyataan bersyarat untuk memastikan bahawa aplikasi Flask hanya berjalan apabila kami menjalankan skrip.

Kini, kami telah berjaya mencipta aplikasi Flask yang mudah.

2. Cipta model pengguna

Dalam contoh ini, kami menganggap bahawa nama pengguna dan kata laluan pengguna telah disimpan ke pangkalan data. Jadi kita perlu menentukan model pengguna terlebih dahulu supaya semasa log masuk kita boleh menyemak sama ada pengguna itu wujud.

Tambahkan kod berikut dalam fail app.py:

from flask_login import UserMixin

class User(UserMixin):
    def __init__(self, id):
        super().__init__()
        self.id = id

    def __repr__(self):
        return f"<User {self.id}>"
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan kelas Pengguna, yang mewarisi daripada kelas UserMixin Flask-Login. UserMixin menyediakan beberapa sifat dan kaedah yang berguna, termasuk:

  • is_authenticated: Benar jika pengguna telah disahkan.
  • is_active: Benar jika pengguna aktif.
  • is_anonymous: Benar jika pengguna tidak disahkan.
  • get_id: Mengembalikan perwakilan rentetan ID pengguna.

Dalam pembina kelas Pengguna, kami memasukkan ID pengguna. Kami juga mentakrifkan kaedah __repr__ untuk melihat lebih banyak maklumat tentang objek pengguna semasa penyahpepijatan dan ujian.

  1. Menulis paparan log masuk

Sekarang, kita perlu menulis paparan log masuk yang akan membenarkan pengguna memasukkan nama pengguna dan kata laluan mereka. Jika nama pengguna dan kata laluan pengguna adalah betul, log masuk berjaya dan objek pengguna ditambahkan pada sesi pengguna Flask-Login.

Tambahkan kod berikut dalam fail app.py:

from flask_login import LoginManager, login_user, current_user

login_manager = LoginManager()
login_manager.init_app(app)

@login_manager.user_loader
def load_user(user_id):
    return User(user_id)

@app.route("/login")
def login():
    user_id = request.args.get("user_id")
    password = request.args.get("password")
    if user_id and password:
        # 省略查询数据库的代码
        user = User(user_id)
        login_user(user)
        return "Login success!"
    else:
        return "Login failed!"

@app.route("/logout")
def logout():
    logout_user()
    return "Logout success!"
Salin selepas log masuk

Dalam contoh ini, kami mula-mula mencipta objek LoginManager. Kami kemudiannya mentakrifkan fungsi panggil balik user_loader yang mengambil ID pengguna sebagai parameter dan mengembalikan objek pengguna yang sepadan dengan ID tersebut. Dalam contoh ini, kami mencipta objek User baharu dan lulus ID sebagai parameter.

Seterusnya, kami mentakrifkan paparan log masuk. Dalam fungsi paparan, kami menggunakan kaedah request.args.get untuk mendapatkan ID pengguna dan kata laluan daripada rentetan pertanyaan. Kemudian kami menyemak sama ada ID pengguna dan kata laluan adalah sah. Jika nama pengguna dan kata laluan pengguna adalah betul, cipta objek User baharu dan gunakan fungsi login_user untuk menambah objek pada sesi pengguna Flask-Login. Jika nama pengguna dan kata laluan pengguna salah, pengguna tidak boleh log masuk.

Akhir sekali, kami mentakrifkan paparan log keluar, yang menggunakan fungsi logout_user untuk mengalih keluar objek pengguna semasa daripada sesi pengguna Flask-Login dan mengembalikan mesej yang menunjukkan log keluar yang berjaya.

  1. Lindungi pandangan lain

Kini, kami telah melaksanakan sistem log masuk pengguna tetapi kami tidak menggunakannya untuk melindungi pandangan lain. Dalam contoh ini, kami akan melindungi halaman yang dipanggil "profil" yang hanya boleh diakses apabila pengguna log masuk. Jika pengguna tidak log masuk, mereka akan dialihkan ke halaman log masuk.

Tambah kod berikut dalam fail app.py:

from flask_login import login_required

@app.route("/profile")
@login_required
def profile():
    return f"Welcome, {current_user.id}!"
Salin selepas log masuk

Dalam contoh ini, kami menggunakan penghias login_required untuk melindungi laluan "profil". Jika pengguna tidak log masuk, penghias ini akan mengubah hala ke halaman log masuk.

Apabila melindungi paparan, kami juga menggunakan current_user pembolehubah global untuk mengakses maklumat pengguna yang sedang log masuk. Dalam contoh ini, kami menambah mesej alu-aluan ringkas yang mengandungi ID pengguna yang sedang log masuk.

  1. Jalankan aplikasi

Kini, kami telah menyelesaikan semua pelaksanaan sistem log masuk pengguna. Mari jalankan aplikasi dan ujinya.

Masukkan arahan berikut dalam terminal untuk melancarkan aplikasi:

python app.py
Salin selepas log masuk

Masukkan URL berikut dalam penyemak imbas untuk mengakses halaman utama:

http://localhost:5000/
Salin selepas log masuk

Anda seharusnya melihat "Hello World !" rentetan. Sekarang cuba akses URL berikut:

http://localhost:5000/profile
Salin selepas log masuk

Memandangkan anda bukan pengguna yang disahkan, anda akan dialihkan ke halaman log masuk. Masukkan ID pengguna dan kata laluan yang sah dalam rentetan pertanyaan, contohnya:

http://localhost:5000/login?user_id=1&password=password123
Salin selepas log masuk

Jika anda memasukkan nama pengguna dan kata laluan yang betul, anda sepatutnya melihat "Mesej log masuk!" Sekarang, akses laluan "/profile" sekali lagi dan ia sepatutnya memaparkan mesej alu-aluan yang mengandungi ID pengguna yang sedang log masuk.

如果你在浏览器中访问以下URL,则可以注销当前会话:

http://localhost:5000/logout
Salin selepas log masuk

这样就完成了用户登录系统的所有实现。

总结

在本文中,我们介绍了如何使用Flask-Login扩展在Python服务器中实现用户登录功能。使用Flask-Login可以方便地验证和保护Web应用程序中的用户数据。此外,Flask-Login提供了许多有用的功能和方法,如会话管理和用户保护。希望这篇文章能够帮助你更好地了解如何使用Flask-Login编写Python服务器应用程序。

Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: menggunakan Flask-Login untuk melaksanakan log masuk pengguna. 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