ホームページ  >  記事  >  PHPフレームワーク  >  Laravel によるユーザー認証と認可: アプリケーションの保護

Laravel によるユーザー認証と認可: アプリケーションの保護

WBOY
WBOYオリジナル
2023-08-12 23:55:531493ブラウズ

Laravel によるユーザー認証と認可: アプリケーションの保護

Laravel を使用したユーザー認証と認可: アプリケーションの保護

はじめに:

多くの Web アプリケーションにとって、ユーザー認証と認可はデータの重要なコンポーネントです。セキュリティとアクセス制御。 Laravel フレームワークは、ユーザーの認証と認可を処理するための強力かつ柔軟なメカニズムを提供し、開発者が不正アクセスからアプリケーションを簡単に保護できるようにします。

この記事では、Laravel の認証および認可機能を使用してアプリケーションのセキュリティを保護する方法を紹介し、いくつかの実用的なコード例を示します。

1. ユーザー認証

ユーザー認証は、ユーザーの身元を確認して、ユーザーが正当なアプリケーション ユーザーであることを確認するプロセスです。 Laravel には、ユーザー登録、ログイン、パスワードリセットなどの機能を簡単に実装できる認証システムが組み込まれています。

  1. ユーザー モデルとデータベース移行のセットアップ

まず、ユーザー モデルと対応するデータベース移行を作成する必要があります。ターミナルで次のコマンドを実行して、ユーザー モデルとデータベースの移行を生成します。

php artisan make:model User -m

これにより、ユーザーの作成用に、アプリ ディレクトリに User.php モデル ファイルが生成され、database/migrations ディレクトリにデータベース移行ファイルが生成されます。テーブル。

生成された移行ファイルを編集し、up() メソッドのコードを次のように変更します:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

次に、移行コマンドを実行してユーザー テーブルを作成します:

php artisan migrate
  1. 認証コントローラーとビューの作成

次に、ユーザー登録、ログイン、パスワードのリセットなどの操作を処理するために、認証コントローラーと対応するビューを作成する必要があります。次のコマンドを実行して、Auth コントローラーを生成します。

php artisan make:controller AuthController

生成された AuthController コントローラーでは、Laravel の組み込み AuthTraits を使用して認証ロジックを処理できます。コントローラーに次の名前空間を必ず導入してください:

use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateFoundationAuthResetsPasswords;

次に、ユーザー認証を処理するために AuthController でいくつかのメソッドを定義できます。一般的に使用されるメソッドの例をいくつか示します。

// 注册用户
public function register(Request $request)
{
    // 实现用户注册逻辑
}

// 用户登录
public function login(Request $request)
{
    // 实现用户登录逻辑
}

// 用户登出
public function logout(Request $request)
{
    // 实现用户登出逻辑
}

// 密码重置
public function resetPassword(Request $request)
{
    // 实现密码重置逻辑
}

また、登録、ログイン、パスワード リセットのフォームを表示するためのビューをいくつか作成する必要があります。これらのビューは、次のコマンドを使用して生成できます:

php artisan make:auth

上記のコマンドを実行すると、Laravel は register.blade.php、login.blade.php、passwords フォルダーなどを含む関連ビュー ファイルを自動的に生成します。

  1. ルーティング設定

上記の手順を完了したら、ユーザー認証リクエストを処理するために対応するルーティングを構成する必要があります。 Routes/web.php ファイルに、次のルート例を追加できます:

// 显示注册表单
Route::get('/register', 'AuthController@showRegistrationForm')->name('register');
// 处理用户注册
Route::post('/register', 'AuthController@register');

// 显示登录表单
Route::get('/login', 'AuthController@showLoginForm')->name('login');
// 处理用户登录
Route::post('/login', 'AuthController@login');

// 用户登出
Route::post('/logout', 'AuthController@logout')->name('logout');

// 显示密码重置链接请求表单
Route::get('/password/reset', 'AuthController@showLinkRequestForm')->name('password.request');
// 处理密码重置链接请求
Route::post('/password/email', 'AuthController@sendResetLinkEmail')->name('password.email');

// 显示密码重置表单
Route::get('/password/reset/{token}', 'AuthController@showResetForm')->name('password.reset');
// 处理密码重置请求
Route::post('/password/reset', 'AuthController@resetPassword')->name('password.update');

この時点で、ユーザー認証に必要な基本構成が完了しました。ブラウザから該当のURLにアクセスすることで、登録・ログイン・パスワード再設定などの機能をご利用いただけます。

2. ユーザー承認

ユーザー承認は、ユーザーが特定のリソースにアクセスしたり、特定の操作を実行したりする権利を持っているかどうかを決定するプロセスです。 Laravelの認可機能は、ユーザーのID情報やロールに基づいて権限を決定し、シンプルで使いやすい権限制御の仕組みを提供します。

  1. 権限モデルとデータベース移行の定義

まず、権限モデルと対応するデータベース移行を作成する必要があります。ターミナルで次のコマンドを実行して、権限モデルとデータベース移行を生成します。

php artisan make:model Permission -m

これにより、アプリ ディレクトリに Permission.php モデル ファイルが生成され、database/migrations ディレクトリにデータベース移行ファイルが生成されます。権限テーブル。

生成された移行ファイルを編集し、up() メソッドのコードを次のように変更します:

public function up()
{
    Schema::create('permissions', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('slug');
        $table->timestamps();
    });
}

次に、移行コマンドを実行して権限テーブルを作成します:

php artisan migrate
  1. 認可ポリシーとミドルウェアの作成
##次に、認可ポリシーを作成してユーザーの役割と権限の関係を定義し、ユーザーにアクセス権があるかどうかを確認する認可ミドルウェアを作成する必要があります。特定のリソース。

次のコマンドを実行して認可ポリシーを生成します:

php artisan make:policy PostPolicy

生成された PostPolicy ファイルでは、ユーザーが特定のリソースにアクセスする権利があるかどうかを判断するためのメソッドをいくつか定義できます。以下に例を示します。

public function view(User $user, Post $post)
{
    // 判断用户是否有权限查看指定的文章
    return $user->can('view-post');
}

次に、ユーザーの権限を確認するための認可ミドルウェアを作成する必要があります。次のコマンドを実行してミドルウェアを生成します。

php artisan make:middleware CheckPermission

生成された CheckPermission ミドルウェア ファイルには、ユーザーが特定のリソースにアクセスする権利があるかどうかを判断するカスタム ロジックを実装できます。以下は例です:

public function handle($request, Closure $next, $permission)
{
    if (! $request->user()->can($permission)) {
        abort(403, 'Unauthorized');
    }

    return $next($request);
}

    認可ポリシーとミドルウェアの構成
上記の手順を完了した後、関連するモデルで認可ポリシーとミドルウェアを構成する必要もあります。そしてルートミドルウェア。

app/Providers/AuthServiceProvider.php ファイルで、認可ポリシーを登録する必要があります。 $policies 属性を見つけて、次のコードを追加します。

protected $policies = [
    'AppMode' => 'AppPoliciesModePolicy',
];

routes/web.php ファイルでは、middleware() メソッドを使用して認可ミドルウェアを適用できます。以下は例です:

Route::group(['middleware' => 'auth'], function () {
    Route::get('/posts/{post}', 'PostController@show')->middleware('can:view,post');
});

上の例では、「middleware」キー値に対応する値を「can:view,post」に設定します。これは、指定されたルートにアクセスするときに「auth」が行われることを意味します。 ' は、最初にミドルウェアがユーザーを認証するために適用され、次にユーザーが特定のリソースにアクセスする権限を持っているかどうかを確認します。

要約:

ユーザーの認証と認可に Laravel を使用することは、アプリケーションのセキュリティとアクセス制御を保護するための重要なステップです。 Laravel に組み込まれた認証システムと認可機能を通じて、開発者はユーザー登録、ログイン、パスワードのリセット、その他の機能を簡単に実装でき、ユーザーがアクセスするリソースが合法であり、認可ポリシーとミドルウェアによって保護されていることを確認できます。上記は簡単なデモであり、実際のニーズに応じてさらにカスタマイズおよび拡張できます。

参考リンク: https://laravel.com/docs/authentication

以上がLaravel によるユーザー認証と認可: アプリケーションの保護の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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