Flask-Security: Python Web アプリケーションへのユーザー認証とパスワード暗号化の追加
インターネットの発展に伴い、ユーザーのデータ セキュリティを保護するためにユーザー認証とパスワード暗号化を必要とするアプリケーションがますます増えています。 Python 言語には、非常に人気のある Web フレームワークである Flask があります。 Flask-Security は、開発者が Python Web アプリケーションにユーザー認証およびパスワード暗号化機能を簡単に追加できるようにする、Flask フレームワークに基づく拡張ライブラリです。
Flask-Security には次の機能があります:
pip install Flask-Securityもちろん、Flask や Flask-SQLAlchemy (または他の ORM ライブラリ) など、他の必要な依存ライブラリもインストールする必要があります:
pip install Flask Flask-SQLAlchemyFlask-Security の構成Flask-Security をインストールした後、ユーザー認証とパスワード暗号化を有効にするためにいくつかのパラメーターを構成する必要があります。まず、Flask-Security 拡張ライブラリを Flask アプリケーションに導入する必要があります:
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_security import Security, SQLAlchemyUserDatastore, UserMixin, RoleMixin, login_required次に、データベース接続情報、キーなどを含むいくつかの必要な構成パラメータを定義する必要があります:
app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db' app.config['SECRET_KEY'] = 'mysecretkey'ここではデータベースとして SQLite を使用し、それをファイルに保存します。もちろん、対応するデータベース接続情報を変更するだけで、他のデータベース (MySQL や PostgreSQL など) を使用することもできます。 次に、ユーザー クラスとロール クラスを定義する必要があります。ここでは、ORM ライブラリとして SQLAlchemy を使用します:
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'))ここでは、ユーザー クラスとロール クラスを定義し、それらを追加しますはそれぞれ user_roles テーブルに関連付けられています。また、ユーザーとロールの情報を管理するための user_datastore オブジェクトも定義します。 次に、セキュリティ拡張ライブラリを通じて定義したパラメータとクラスを設定する必要があります:
security = Security(app, user_datastore)この時点で、Flask-Security の設定は完了です。次に、Flask アプリケーションでユーザー認証とパスワード暗号化機能を使用できます。 ユーザー認証とパスワード暗号化に Flask-Security を使用するFlask-Security を使用する前に、新しい Flask ブループリントを作成し、ユーザーのログイン、登録、ログアウトとその他の操作:
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')ここでは、ログイン、ログアウト、登録という 3 つのビュー関数を定義します。ログイン関数はユーザーのログイン操作を処理するために使用され、レジスタ関数はユーザーの登録操作を処理するために使用され、ログアウト関数はユーザーのログアウト操作を処理するために使用されます。このうち、Flask-Securityが提供するlogin_user関数とlogout_user関数を利用して、ユーザーのログイン機能とログアウト機能を実装します。 register 関数では、user_datastore.create_user 関数と user_datastore.add_role_to_user 関数を使用して新しいユーザーを作成し、デフォルトのユーザー ロールを割り当てます。 ここでは、Flask のテンプレート エンジンを使用して HTML ページをレンダリングします。詳細については、Flask テンプレート エンジンのドキュメントを参照してください。 最後に、このブループリントを Flask アプリケーションに登録する必要があります:
app.register_blueprint(security_blueprint)この時点で、Flask-Security の使用は完了です。これで、Flask アプリケーションを起動し、ブラウザ経由でアクセスできるようになりました。 概要この記事では、Flask-Security を使用してユーザー認証とパスワード暗号化機能を Python Web アプリケーションに追加する方法を紹介しました。この記事を読むことで、Flask-Security の基本的な使い方を理解し、その特徴や注意点を理解することができます。実際のアプリケーションでは、ニーズに合わせて Flask-Security の機能を自由にカスタマイズおよび拡張できます。
以上がFlask-Security: Python Web アプリケーションにユーザー認証とパスワード暗号化を追加するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。