Flask-Security: Python Web アプリケーションへのユーザー認証とパスワード暗号化の追加
インターネットの発展に伴い、ユーザーのデータ セキュリティを保護するためにユーザー認証とパスワード暗号化を必要とするアプリケーションがますます増えています。 Python 言語には、非常に人気のある Web フレームワークである Flask があります。 Flask-Security は、開発者が Python Web アプリケーションにユーザー認証およびパスワード暗号化機能を簡単に追加できるようにする、Flask フレームワークに基づく拡張ライブラリです。
Flask-Security には次の機能があります:
pip install Flask-Security
pip install Flask Flask-SQLAlchemy
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'
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'))
security = Security(app, user_datastore)
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')
app.register_blueprint(security_blueprint)
以上がFlask-Security: Python Web アプリケーションにユーザー認証とパスワード暗号化を追加するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。