Flask-Security: Tambahkan pengesahan pengguna dan penyulitan kata laluan pada aplikasi web Python
Ketika Internet terus berkembang, semakin banyak aplikasi memerlukan pengesahan pengguna dan penyulitan kata laluan untuk melindungi keselamatan Data pengguna. Dalam bahasa Python, terdapat rangka kerja web yang sangat popular-Flask. Flask-Security ialah perpustakaan sambungan berdasarkan rangka kerja Flask yang membantu pembangun menambahkan dengan mudah pengesahan pengguna dan keupayaan penyulitan kata laluan pada aplikasi web Python.
Flask-Security mempunyai ciri berikut:
Dalam artikel ini, kami akan membincangkan cara menggunakan Flask-Security untuk menambah pengesahan pengguna dan keupayaan penyulitan kata laluan pada aplikasi web Python anda.
Pasang Flask-Security
Sebelum kita mula menggunakan Flask-Security, kita perlu memasangnya terlebih dahulu. Kita boleh menggunakan pip untuk memasang Flask-Security:
pip install Flask-Security
Sudah tentu, kita juga perlu memasang beberapa perpustakaan bergantung lain yang diperlukan, termasuk Flask dan Flask-SQLAlchemy (atau perpustakaan ORM lain):
pip install Flask Flask-SQLAlchemy
Mengkonfigurasi Flask-Security
Selepas memasang Flask-Security, kami perlu mengkonfigurasi beberapa parameter untuk membolehkan pengesahan pengguna dan fungsi penyulitan kata laluan. Mula-mula, kita perlu memperkenalkan perpustakaan sambungan Flask-Security ke dalam aplikasi Flask:
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_security import Security, SQLAlchemyUserDatastore, UserMixin, RoleMixin, login_required
Seterusnya, kita perlu menentukan beberapa parameter konfigurasi yang diperlukan, termasuk maklumat sambungan pangkalan data, kunci, dsb.:
app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db' app.config['SECRET_KEY'] = 'mysecretkey'
Di sini kami menggunakan SQLite sebagai pangkalan data kami dan menyimpannya dalam fail. Sudah tentu, anda juga boleh menggunakan pangkalan data lain (seperti MySQL atau PostgreSQL), cuma ubah suai maklumat sambungan pangkalan data yang sepadan.
Seterusnya, kita perlu mentakrifkan kelas Pengguna dan kelas Peranan Di sini kita menggunakan SQLAlchemy sebagai perpustakaan ORM:
db = SQLAlchemy(app) class Role(db.Model, RoleMixin): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime()) roles = db.relationship('Role', secondary='user_roles', backref=db.backref('users', lazy='dynamic')) user_datastore = SQLAlchemyUserDatastore(db, User, Role) class UserRoles(db.Model): id = db.Column(db.Integer(), primary_key=True) user_id = db.Column(db.Integer(), db.ForeignKey('user.id')) role_id = db.Column(db.Integer(), db.ForeignKey('role.id'))
Di sini, kami mentakrifkan kelas Pengguna dan kelas Peranan, dan meletakkan. Mereka dikaitkan dengan jadual pengguna_peranan masing-masing. Kami juga mentakrifkan objek user_datastore untuk mengurus maklumat pengguna dan peranan.
Seterusnya, kami perlu mengkonfigurasi parameter dan kelas yang kami takrifkan melalui pustaka sambungan Keselamatan:
security = Security(app, user_datastore)
Pada ketika ini, kami telah melengkapkan konfigurasi Flask-Security. Seterusnya, kami boleh menggunakan fungsi pengesahan pengguna dan penyulitan kata laluan dalam aplikasi Flask kami.
Gunakan Flask-Security untuk pengesahan pengguna dan penyulitan kata laluan
Sebelum menggunakan Flask-Security, kita perlu mencipta pelan tindakan Flask baharu dan mentakrifkan beberapa fungsi paparan di dalamnya untuk mengendalikan Log masuk pengguna, pendaftaran, log keluar dan operasi lain:
from flask import Blueprint, render_template, redirect, url_for, request from flask_security import login_user, logout_user, current_user, login_required security_blueprint = Blueprint('security', __name__) @security_blueprint.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': email = request.form.get('email') password = request.form.get('password') user = user_datastore.find_user(email=email) if user is not None and user.password == password: login_user(user) return redirect(url_for('index')) return redirect(url_for('login')) return render_template('login.html') @security_blueprint.route('/logout') @login_required def logout(): logout_user() return redirect(url_for('index')) @security_blueprint.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': email = request.form.get('email') password = request.form.get('password') user = user_datastore.create_user(email=email, password=password) user_datastore.add_role_to_user(user, 'user') db.session.commit() login_user(user) return redirect(url_for('index')) return render_template('register.html')
Di sini, kami mentakrifkan tiga fungsi paparan: log masuk, log keluar dan daftar. Fungsi log masuk digunakan untuk memproses operasi log masuk pengguna, fungsi daftar digunakan untuk memproses operasi pendaftaran pengguna, dan fungsi log keluar digunakan untuk memproses operasi log keluar pengguna. Antaranya, kami menggunakan fungsi login_user dan logout_user yang disediakan oleh Flask-Security untuk melaksanakan fungsi log masuk dan log keluar pengguna. Dalam fungsi daftar, kami menggunakan fungsi user_datastore.create_user dan user_datastore.add_role_to_user untuk mencipta pengguna baharu dan menetapkannya sebagai peranan pengguna lalai.
Di sini, kami menggunakan enjin templat Flask untuk memaparkan halaman HTML Untuk butiran, sila rujuk dokumentasi enjin templat Flask.
Akhir sekali, kami perlu mendaftar pelan tindakan ini dalam aplikasi Flask kami:
app.register_blueprint(security_blueprint)
Pada ketika ini, kami telah selesai menggunakan Flask-Security. Kini, kami boleh melancarkan aplikasi Flask kami dan mengaksesnya melalui penyemak imbas.
Ringkasan
Dalam artikel ini, kami memperkenalkan cara menggunakan Flask-Security untuk menambah pengesahan pengguna dan keupayaan penyulitan kata laluan pada aplikasi web Python. Dengan mengkaji artikel ini, kita boleh memahami penggunaan asas Flask-Security dan memahami beberapa ciri dan langkah berjaga-jaganya. Dalam aplikasi sebenar, kami bebas untuk menyesuaikan dan melanjutkan fungsi Flask-Security untuk memenuhi keperluan kami.
Atas ialah kandungan terperinci Flask-Security: Menambah pengesahan pengguna dan penyulitan kata laluan pada aplikasi web Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!