Spatie Laravel 권한을 위한 사용자 지정 동적 미들웨어를 생성하는 방법
8578 단어 javascriptphplaravel
이 게시물에서는 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를 방문하십시오.
행복한 코딩 :)
Reference
이 문제에 관하여(Spatie Laravel 권한을 위한 사용자 지정 동적 미들웨어를 생성하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codeanddeploy/how-to-create-a-custom-dynamic-middleware-for-spatie-laravel-permission-2a08텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)