Laravel の認可メカニズムと実装方法を調べる

PHPz
リリース: 2023-04-21 11:14:57
オリジナル
692 人が閲覧しました

Laravel は、さまざまな種類の Web アプリケーションの構築に使用される人気のある PHP フレームワークです。 Web アプリケーションを構築する場合、多くの場合、ユーザーとリソースを管理および保護する必要があり、そのためにはアクセス許可の管理が必要になります。

Laravel は、アプリケーションのユーザーにさまざまなレベルのアクセス許可を簡単に付与できる、シンプルかつ強力な認証および承認方法を提供します。この記事では、Laravel の承認メカニズムとその実装方法について説明します。

Laravel 認可とは

認可とは、アプリケーションでアクセス制御を定義および実装するプロセスを指します。これには、ユーザーが誰であるか、ユーザーの ID を検証し、共有リソースへのアクセスが許可されていることを確認することが含まれます。

Laravel では、承認とは、ユーザーが実行できる特定の操作、またはユーザーがアクセスできる特定のリソースを指します。アプリケーション内の機密性の高い操作やリソースを保護するかどうかは、ユーザーのロールまたはライセンスに基づいて決定されます。

Laravel 認可の種類

Laravel には、ミドルウェア認可とポリシー認可の 2 種類の認可があります。

ミドルウェア承認

ミドルウェア承認は、Laravel のミドルウェア メカニズムを通じて実装されます。ミドルウェアは、HTTP リクエストとレスポンスの間で実行されるコードであり、リクエストの検証、認可、ログ操作などのさまざまなタスクを完了するために使用できます。

ミドルウェア認可を使用する場合、各ミドルウェアは特定の条件をチェックします。条件が満たされない場合、ミドルウェアはリクエストを拒否し、ユーザーをログイン ページまたはその他のエラー ページにリダイレクトできます。

ポリシー認可

ポリシー認可は、アプリケーション内の各モデルを表す個別の認可システムです。ポリシー認可を使用する場合、データの読み取り、作成、更新、削除などの使用権限をモデルごとに定義できます。

ポリシー認可を使用する場合、認可ロジックを処理するメソッドを設定できます。認可チェックが失敗した場合、Laravel は自動的に 403 Forbidden 例外をスローします。

Laravel 認可の実装

ミドルウェア認可

ミドルウェア認可を使用するには、ミドルウェアを実装し、ルートに追加します。ミドルウェアは特定の条件を確認し、条件が満たされない場合はリクエストを停止する必要があります。

次は、ユーザーが特定のロールを持っているかどうかを確認するミドルウェア実装の例です:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RoleMiddleware
{
    public function handle($request, Closure $next, $role)
    {
        if (! Auth::user()->hasRole($role)) {
            return redirect('/home');
        }

        return $next($request);
    }
}
ログイン後にコピー

このミドルウェアを使用するには、app/Http/Kernel に登録します。 php ファイルの ##$routeMiddleware 属性。

protected $routeMiddleware = [
    'role' => \App\Http\Middleware\RoleMiddleware::class,
];
ログイン後にコピー
これで、ルートで

role ミドルウェアを使用できるようになります。

Route::group(['middleware' => ['role:admin']], function () {
    Route::get('/dashboard', function () {
        // Your code
    });
});
ログイン後にコピー
上記のコードは、ユーザーが

admin ロールを持っているかどうかを確認し、持っていない場合はホームページにリダイレクトします。必要に応じてミドルウェアの実装を変更できます。

ポリシー認可

ポリシー認可は、モデルに関連する個別の認可システムです。ポリシー認可を実装するには、次の手順に従う必要があります。

    ポリシーの生成

make:policy コマンドを使用して、ポリシー クラスを生成します。

php artisan make:policy ArticlePolicy --model=Article
ログイン後にコピー
このコマンドは、

ArticlePolicy という名前のクラスを app/Policies ディレクトリに作成します。このクラスの Article モデルごとに認可ロジックを指定できます。

    ポリシーの登録

app/Providers/AuthServiceProvider.php ファイルの $policies 属性にポリシーを登録します。 :

use App\Article;
use App\Policies\ArticlePolicy;

protected $policies = [
    Article::class => ArticlePolicy::class,
];
ログイン後にコピー
    承認メソッドの作成
これで、ポリシーに承認ロジックを実装できます。たとえば、記事を編集できるメソッドを作成できます。

public function update(User $user, Article $article)
{
    return $user->id === $article->user_id;
}
ログイン後にコピー
上記のコードは、現在のユーザーが記事の作成者であるかどうかを確認し、そうであれば記事を変更できます。そうしないと記事編集ページにアクセスできません。

コントローラーでポリシー承認を使用するには、

update メソッドにアクセスする前に、authorize メソッドを呼び出します。

public function update(Article $article, Request $request)
{
    $this->authorize('update', $article);

    // Your code
}
ログイン後にコピー
上記のコードは、ユーザーをチェックします。記事を変更する権限があるかどうかに関係なく、そうでない場合は、

403 Forbidden 例外がスローされます。

概要

Laravel は、アプリケーションのユーザーに対してさまざまな権限レベルを簡単に定義できる、シンプルかつ強力な承認メカニズムを提供します。ミドルウェア認可とポリシー認可は Laravel 認可の 2 種類であり、さまざまなシナリオに対応できます。

この記事の導入により、Laravel の認可の概念と実装方法は習得できたと思いますが、ユーザー権限管理が必要な Web アプリケーションを構築する場合、この知識は武器になります。

以上がLaravel の認可メカニズムと実装方法を調べるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!