Flask-보안: Python 웹 애플리케이션에 사용자 인증 및 비밀번호 암호화 추가
인터넷이 지속적으로 발전함에 따라 점점 더 많은 애플리케이션에서 사용자 데이터 보안을 보호하기 위해 사용자 인증 및 비밀번호 암호화가 필요합니다. Python 언어에는 매우 인기 있는 웹 프레임워크인 Flask가 있습니다. Flask-Security는 개발자가 Python 웹 애플리케이션에 사용자 인증 및 비밀번호 암호화 기능을 쉽게 추가하는 데 도움이 되는 Flask 프레임워크 기반의 확장 라이브러리입니다.
Flask-Security에는 다음 기능이 있습니다.
이 기사에서는 Flask-Security를 사용하여 Python에 사용자 인증 및 비밀번호 암호화 기능을 추가하는 방법을 소개합니다. 웹 애플리케이션.
Flask-Security 설치
Flask-Security를 사용하기 전에 먼저 설치해야 합니다. pip를 사용하여 Flask-Security를 설치할 수 있습니다.
pip install Flask-Security
물론 Flask 및 Flask-SQLAlchemy(또는 기타 ORM 라이브러리)를 포함하여 다른 필수 종속 라이브러리도 설치해야 합니다.
pip install Flask Flask-SQLAlchemy
Configure Flask-Security
In 설치 Flask-Security를 완료한 후 사용자 인증 및 비밀번호 암호화 기능을 활성화하려면 일부 매개변수를 구성해야 합니다. 먼저 Flask 애플리케이션에 Flask-Security 확장 라이브러리를 도입해야 합니다.
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)를 사용할 수도 있으며 해당 데이터베이스 연결 정보만 수정하면 됩니다.
다음으로 User 및 Role 클래스를 정의해야 합니다. 여기서는 SQLAlchemy를 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'))
여기에서는 User 클래스와 Role 클래스를 정의하고 각각 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')
여기서는 로그인, 로그아웃, 등록이라는 세 가지 보기 기능을 정의합니다. 로그인 함수는 사용자 로그인 작업을 처리하는 데 사용되며, 등록 함수는 사용자 등록 작업을 처리하는 데 사용되며, 로그아웃 함수는 사용자 로그아웃 작업을 처리하는 데 사용됩니다. 그 중 Flask-Security에서 제공하는 login_user, logout_user 함수를 사용하여 사용자 로그인 및 로그아웃 기능을 구현합니다. 등록 함수에서는 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 웹 애플리케이션에 사용자 인증 및 비밀번호 암호화 기능을 추가하는 방법을 다루었습니다. 이 글을 공부함으로써 우리는 Flask-Security의 기본적인 사용법을 이해하고 그 특징과 주의사항을 이해할 수 있습니다. 실제 애플리케이션에서는 필요에 따라 Flask-Security의 기능을 자유롭게 사용자 정의하고 확장할 수 있습니다.
위 내용은 Flask-Security: Python 웹 애플리케이션에 사용자 인증 및 비밀번호 암호화 추가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!