Spatie Laravel 권한을 위한 사용자 지정 동적 미들웨어를 생성하는 방법

8578 단어 javascriptphplaravel
원래 게시된 @https://codeanddeploy.com 방문하여 샘플 코드 다운로드: https://codeanddeploy.com/blog/laravel/how-to-create-a-custom-dynamic-middleware-for-spatie-laravel-permission

이 게시물에서는 spatie Laravel 권한에 대한 사용자 지정 미들웨어를 만드는 방법을 공유하고 있습니다. 이전 게시물에서 spatie를 사용하여 Laravel 8 사용자 역할 및 권한을 구현하는 방법을 공유했습니다. 이제 귀하의 허가를 위해 사용자 정의 미들웨어를 생성하는 방법에 대해 별도의 게시물을 작성하겠습니다.

따라서 사용자 정의 동적 미들웨어 권한을 생성하려는 경우 이것이 적합합니다. 이 자습서에서는 경로 이름을 권한으로 사용하겠습니다.

필요하시면 제previous post를 방문해주세요.

간단히 말해서 spatie에 의해 Laravel 권한이 이미 설치되어 있다고 가정했습니다.

1단계: 미들웨어 생성



프로젝트 디렉터리에 대해 다음 명령을 실행합니다.

php artisan make:middleware PermissionMiddleware


그리고 여기 우리 PermissionMiddlware 클래스의 커스텀 코드가 있습니다. App\Http\Middleware\PermissionMiddleware.php로 이동합니다.

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Spatie\Permission\Exceptions\UnauthorizedException;

class PermissionMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next, $permission = null, $guard = null)
    {
        $authGuard = app('auth')->guard($guard);

        if ($authGuard->guest()) {
            throw UnauthorizedException::notLoggedIn();
        }

        if (! is_null($permission)) {
            $permissions = is_array($permission)
                ? $permission
                : explode('|', $permission);
        }

        if ( is_null($permission) ) {
            $permission = $request->route()->getName();

            $permissions = array($permission);
        }


        foreach ($permissions as $permission) {
            if ($authGuard->user()->can($permission)) {
                return $next($request);
            }
        }

        throw UnauthorizedException::forPermissions($permissions);
    }
}


2단계: 사용자 지정 미들웨어 등록



미들웨어에 코드를 생성하고 추가한 후 등록해 봅시다.

이제 app/Http/Kernel.php 파일을 탐색한 다음 $routeMiddleware 속성에서 다음 미들웨어를 추가하겠습니다.

protected $routeMiddleware = [
        .
        .
        'permission' => \App\Http\Middleware\PermissionMiddleware::class
];


이제 사용자 정의 동적 권한이 이미 등록되었습니다. 제한된 경로에 넣어 봅시다.

3단계: 경로 추가




<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::group(['namespace' => 'App\Http\Controllers'], function()
{   

    Route::group(['middleware' => ['auth', 'permission']], function() {
      //your restricted routes here
    });
});


보시다시피 제한된 그룹 경로에 'permission' 미들웨어를 추가했습니다.

이 튜토리얼이 도움이 되었으면 합니다. 이 코드를 다운로드하려면 여기https://codeanddeploy.com/blog/laravel/how-to-create-a-custom-dynamic-middleware-for-spatie-laravel-permission를 방문하십시오.

행복한 코딩 :)

좋은 웹페이지 즐겨찾기