Flask でのユーザー認証と認可

Jun 17, 2023 pm 06:02 PM
flask 認証 承認する

Web アプリケーションの普及に伴い、Web アプリケーション開発ではセキュリティとデータ保護が重要な問題となっています。 Web アプリケーションのセキュリティを確保するには、ユーザーの認証と認可が必要です。人気のある Web 開発フレームワークとして、Flask はユーザーの認証と認可を実装するための多くのメカニズムを提供します。

  1. ユーザー認証

ユーザー認証とは、ユーザーが Web アプリケーションにアクセスするときに、特定の認証方法を使用してユーザーの ID が正当であるかどうかを判断することを指します。 Flask には、ユーザー認証を実装するための多くの組み込みメソッドが用意されています。

1.1. HTTP 基本認証

HTTP 基本認証は HTTP プロトコルに基づく認証メカニズムであり、ユーザーはリソースをリクエストするときに検証のためにユーザー名とパスワードを入力する必要があります。 Flask には HTTP 基本認証機能が組み込まれており、Flask-BasicAuth 拡張機能を通じて簡単に実装できます。

Flask-BasicAuth 拡張機能を使用するには、Flask アプリケーションに BasicAuth オブジェクトをインストールして作成し、それを基本認証を必要とするルーティング関数に修飾する必要があります。サンプルコードは次のとおりです。

from flask import Flask
from flask_basicauth import BasicAuth

app = Flask(__name__)

app.config['BASIC_AUTH_USERNAME'] = 'username'
app.config['BASIC_AUTH_PASSWORD'] = 'password'

basic_auth = BasicAuth(app)

@app.route('/')
@basic_auth.required
def index():
    return 'Hello, World!'
ログイン後にコピー

上記のコードでは、BasicAuth の 2 つの設定項目を使用してユーザー名とパスワードを設定しています。ルーティング関数の @basic_auth.required デコレーターは、基本認証関数を実装します。

1.2. フォーム認証

フォーム認証は、Web アプリケーションで最も一般的な認証方法の 1 つです。 Flask でフォーム認証を実装するには、通常、Flask-Login 拡張機能を使用する必要があります。

Flask-Login 拡張機能は、ユーザー データ モデルを表すために使用できる UserMixin クラスを提供します。サンプル コードは次のとおりです。

from flask_login import UserMixin

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

    def get_id(self):
        return str(self.id)
ログイン後にコピー

サンプル コードでは、User クラスは、一般的に使用されるユーザー認証メソッドを含む flask_login.UserMixin クラスを継承します。 Flask-Login 拡張機能では、ユーザー データをロードするためのユーザー ロード関数も提供する必要があります。サンプル コードは次のとおりです。

from flask_login import login_user, LoginManager
from flask import Flask, render_template, redirect, url_for
from werkzeug.security import generate_password_hash, check_password_hash

app = Flask(__name__)
app.secret_key = 'your secret key'

login_manager = LoginManager(app)

# 用户数据
users = {
    1: {'username': 'user1', 'password': 'password1'},
    2: {'username': 'user2', 'password': 'password2'},
    3: {'username': 'user3', 'password': 'password3'},
}

# 实现用户加载函数
@login_manager.user_loader
def load_user(user_id):
    user = users.get(int(user_id))
    if user:
        return User(user_id, user['username'], user['password'])
    return None

# 实现登录视图
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        for user_id, user_data in users.items():
            if user_data['username'] == username and check_password_hash(user_data['password'], password):
                user = User(user_id, username, password)
                login_user(user)
                return redirect(url_for('index'))
        return 'Invalid username/password combination'
    return render_template('login.html')

# 实现需要登录才能访问的视图
@app.route('/')
@login_required
def index():
    return 'Hello, World!'
ログイン後にコピー

サンプル コードでは、Flask-Login 拡張機能を使用するには、Flask アプリケーションを初期化して Secret_key を設定し、次に、login_manager.user_loader デコレータを介してユーザー ロード関数を実装する必要があります。最後に、ログイン制御は、アクセスにログインが必要なビュー関数で @login_required デコレータを使用することで実現できます。

  1. ユーザー承認

ユーザー承認とは、どのユーザーがどのリソースにアクセスできるかを決定することを指します。 Flask でユーザー認証を実装するには、Flask-Principal 拡張機能を使用する必要があります。

Flask-Principal 拡張機能は、Permission、Role、Identity の 3 つのクラスを提供し、リソースにアクセスするためのユーザー権限を定義するために使用できます。 Permission はリソースへのアクセスを要求する権限を表し、Role はユーザー ID またはグループを表し、Identity はユーザーの ID 情報を表します。

サンプル コードは次のとおりです。

from flask_principal import Principal, Identity, AnonymousIdentity, Permission, RoleNeed

app = Flask(__name__)

principal = Principal(app)

# 定义角色,这里假设有管理员和普通用户两种角色
admin_role = RoleNeed('admin')
user_role = RoleNeed('user')

# 定义权限
admin_permission = Permission(admin_role)
user_permission = Permission(user_role)

# 定义 Identity,需要通过 Identity 的认证才能访问需要权限管理的路由
@app.before_request
def before_request():
    identity = Identity(anonymous=True)
    if current_user.is_authenticated:
        identity = Identity(current_user.id)
        if current_user.is_admin:
            identity.provides.add(admin_role)
        else:
            identity.provides.add(user_role)
    principal.identity = identity

# 在需要受权限控制的路由上使用 requires(permission) 装饰器
@app.route('/admin')
@admin_permission.require(http_exception=403)
def admin_index():
    return 'Hello, Admin!'

@app.route('/user')
@user_permission.require(http_exception=403)
def user_index():
    return 'Hello, User!'
ログイン後にコピー

サンプル コードでは、admin_role と user_role という 2 つのロールが定義されています。各役割は、関連する操作アクセスに必要な権限を制御するために使用される権限を定義できます。 before_request 関数では、Identity 認証が実装され、特定の状況に応じてさまざまなロールが追加されます。アクセス許可の制御は、アクセス許可の管理が必要なルートで require(permission) デコレータを使用することで実現できます。

Flask は、ユーザーの認証と認可を実装するためのメソッドを多数提供します。これらの方法を習得すると、開発者が Web アプリケーションのセキュリティを向上させることができます。同時に、開発者は、アプリケーションのセキュリティとユーザー データの保護を確保するために、ユーザーの認証と認可を実装するためにどの方法を使用するかを慎重に検討する必要もあります。

以上がFlask でのユーザー認証と認可の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

React と Flask を使用してシンプルで使いやすい Web アプリケーションを構築する方法 React と Flask を使用してシンプルで使いやすい Web アプリケーションを構築する方法 Sep 27, 2023 am 11:09 AM

React と Flask を使用してシンプルで使いやすい Web アプリケーションを構築する方法 はじめに: インターネットの発展に伴い、Web アプリケーションのニーズはますます多様化および複雑化しています。使いやすさとパフォーマンスに対するユーザーの要件を満たすために、最新のテクノロジー スタックを使用してネットワーク アプリケーションを構築することがますます重要になっています。 React と Flask は、フロントエンドおよびバックエンド開発用の 2 つの非常に人気のあるフレームワークであり、うまく連携してシンプルで使いやすい Web アプリケーションを構築します。この記事では、React と Flask を活用する方法について詳しく説明します。

win10エンタープライズ版2016長期サービス版をプロフェッショナル版にアップグレードする方法 win10エンタープライズ版2016長期サービス版をプロフェッショナル版にアップグレードする方法 Jan 03, 2024 pm 11:26 PM

現在のWin10 Enterprise Edition 2016 長期サービス版を継続利用したくない場合は、一部の内容を変更してシステムイメージをインストールするだけで、Professional Editionに切り替えることができます。 win10 エンタープライズ バージョン 2016 長期サービス バージョンをプロフェッショナル バージョンに変更する方法 1. win + R キーを押し、「regedit」と入力します。 2. 次のパスを上のアドレス バーに直接貼り付けます: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion3 に移動し、EditionID を見つけて内容を「professional」に置き換えて確認します。

Django vs. Flask: Python Web フレームワークの比較分析 Django vs. Flask: Python Web フレームワークの比較分析 Jan 19, 2024 am 08:36 AM

Django と Flask はどちらも Python Web フレームワークのリーダーであり、それぞれに独自の利点と適用可能なシナリオがあります。この記事では、これら 2 つのフレームワークを比較分析し、具体的なコード例を示します。開発の概要 Django はフル機能の Web フレームワークであり、その主な目的は、複雑な Web アプリケーションを迅速に開発することです。 Django は、ORM (オブジェクト リレーショナル マッピング)、フォーム、認証、管理バックエンドなどの多くの組み込み機能を提供します。これらの機能により、Django は大規模なデータを処理できるようになります。

Safari でプライベート ブラウジング認証を無効にする方法: iOS 17 のハウツー ガイド Safari でプライベート ブラウジング認証を無効にする方法: iOS 17 のハウツー ガイド Sep 11, 2023 pm 06:37 PM

iOS 17 では、Apple はモバイル オペレーティング システムにいくつかの新しいプライバシーおよびセキュリティ機能を導入しました。その 1 つは、Safari のプライベート ブラウジング タブに対して 2 段階認証を要求する機能です。その仕組みとオフにする方法は次のとおりです。 iOS 17 または iPadOS 17 を実行している iPhone または iPad で、Safari でプライベート ブラウズ タブを開いてからセッションまたはアプリを終了すると、Apple のブラウザでは再度アクセスするために Face ID/TouchID 認証またはパスコードが必要になります。言い換えれば、ロックが解除されている iPhone または iPad を誰かが手に入れても、パスコードを知らなければ閲覧することはできません。

ゼロから始めて、Flask をインストールし、個人ブログを迅速に確立する方法を段階的にガイドします。 ゼロから始めて、Flask をインストールし、個人ブログを迅速に確立する方法を段階的にガイドします。 Feb 19, 2024 pm 04:01 PM

ゼロから始めて、Flask をインストールし、個人ブログをすぐに構築する方法を段階的に説明します。書くことが好きな人にとって、個人ブログを持つことは非常に重要です。軽量の Python Web フレームワークである Flask は、シンプルで完全に機能する個人ブログを迅速に構築するのに役立ちます。この記事では、ゼロから始めて、Flask をインストールして個人ブログを迅速に構築する方法を段階的に説明します。ステップ 1: Python と pip をインストールする 開始する前に、まず Python と pi をインストールする必要があります

Flask フレームワークのインストールガイド: Flask を正しくインストールするための詳細な手順 Flask フレームワークのインストールガイド: Flask を正しくインストールするための詳細な手順 Feb 18, 2024 pm 10:51 PM

Flask フレームワークのインストール チュートリアル: Flask フレームワークを正しくインストールする方法を段階的に説明します。特定のコード例が必要です。 はじめに: Flask は、シンプルで柔軟な Python Web 開発フレームワークです。学びやすく、使いやすく、強力な機能が満載です。この記事では、Flask フレームワークを正しくインストールする方法を段階的に説明し、参照用の詳細なコード例を提供します。ステップ 1: Python をインストールする Flask フレームワークをインストールする前に、まず Python がコンピュータにインストールされていることを確認する必要があります。 Pから始められます

Flask vs FastAPI: 効率的な Web API 開発のための最良の選択 Flask vs FastAPI: 効率的な Web API 開発のための最良の選択 Sep 27, 2023 pm 09:01 PM

FlaskvsFastAPI: WebAPI の効率的な開発のための最良の選択 はじめに: 現代のソフトウェア開発において、WebAPI は不可欠な部分になっています。これらは、異なるアプリケーション間の通信と相互運用性を可能にするデータとサービスを提供します。 WebAPI を開発するためのフレームワークを選択する場合、Flask と FastAPI の 2 つの選択肢が大きな注目を集めています。どちらのフレームワークも非常に人気があり、それぞれに独自の利点があります。この記事ではフロリダ州について見ていきます。

Flask アプリケーション展開における Gunicorn と uWSGI のパフォーマンスの比較 Flask アプリケーション展開における Gunicorn と uWSGI のパフォーマンスの比較 Jan 17, 2024 am 08:52 AM

Flask アプリケーションのデプロイメント: Gunicorn と suWSGI の比較 はじめに: Flask は、軽量の Python Web フレームワークとして、多くの開発者に愛されています。 Flask アプリケーションを運用環境にデプロイする場合、適切なサーバー ゲートウェイ インターフェイス (SGI) を選択することが重要な決定となります。 Gunicorn と uWSGI は 2 つの一般的な SGI サーバーであり、この記事ではこれらについて詳しく説明します。

See all articles