ホームページ > 記事 > PHPフレームワーク > Laravel の認可メカニズムと実装方法を調べる
Laravel は、さまざまな種類の Web アプリケーションの構築に使用される人気のある PHP フレームワークです。 Web アプリケーションを構築する場合、多くの場合、ユーザーとリソースを管理および保護する必要があり、そのためにはアクセス許可の管理が必要になります。
Laravel は、アプリケーションのユーザーにさまざまなレベルのアクセス許可を簡単に付与できる、シンプルかつ強力な認証および承認方法を提供します。この記事では、Laravel の承認メカニズムとその実装方法について説明します。
認可とは、アプリケーションでアクセス制御を定義および実装するプロセスを指します。これには、ユーザーが誰であるか、ユーザーの ID を検証し、共有リソースへのアクセスが許可されていることを確認することが含まれます。
Laravel では、承認とは、ユーザーが実行できる特定の操作、またはユーザーがアクセスできる特定のリソースを指します。アプリケーション内の機密性の高い操作やリソースを保護するかどうかは、ユーザーのロールまたはライセンスに基づいて決定されます。
Laravel には、ミドルウェア認可とポリシー認可の 2 種類の認可があります。
ミドルウェア承認は、Laravel のミドルウェア メカニズムを通じて実装されます。ミドルウェアは、HTTP リクエストとレスポンスの間で実行されるコードであり、リクエストの検証、認可、ログ操作などのさまざまなタスクを完了するために使用できます。
ミドルウェア認可を使用する場合、各ミドルウェアは特定の条件をチェックします。条件が満たされない場合、ミドルウェアはリクエストを拒否し、ユーザーをログイン ページまたはその他のエラー ページにリダイレクトできます。
ポリシー認可は、アプリケーション内の各モデルを表す個別の認可システムです。ポリシー認可を使用する場合、データの読み取り、作成、更新、削除などの使用権限をモデルごとに定義できます。
ポリシー認可を使用する場合、認可ロジックを処理するメソッドを設定できます。認可チェックが失敗した場合、Laravel は自動的に 403 Forbidden
例外をスローします。
ミドルウェア認可を使用するには、ミドルウェアを実装し、ルートに追加します。ミドルウェアは特定の条件を確認し、条件が満たされない場合はリクエストを停止する必要があります。
次は、ユーザーが特定のロールを持っているかどうかを確認するミドルウェア実装の例です:
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 の認可メカニズムと実装方法を調べるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。