Laravel에서 권한 기반 탐색 메뉴를 구현하는 방법
웹사이트와 애플리케이션의 기능이 점점 더 복잡해짐에 따라 권한 관리가 중요해졌습니다. 사용자가 인증을 통해 로그인하면 권한이 있는 페이지와 기능에 액세스할 수 있지만 권한이 없는 페이지와 기능에는 액세스할 수 없기를 원합니다. 이 글에서는 사용자가 볼 수 있는 내용을 쉽게 제어할 수 있도록 Laravel에서 권한 기반 탐색 메뉴를 구현하는 방법을 설명합니다.
1단계: Laravel 설치 및 데이터베이스 구성
Laravel에 이미 익숙하다면 이 단계를 건너뛸 수 있습니다. 그렇지 않은 경우 다음 단계에 따라 Laravel을 설치하세요.
- Composer 설치: Composer를 아직 설치하지 않은 경우 공식 가이드에 따라 먼저 설치하세요.
-
Laravel 설치: 터미널을 열고 Composer를 사용하여 Laravel을 설치합니다.
composer global require laravel/installer
로그인 후 복사 데이터베이스 구성: .env 파일에서 데이터베이스 연결 매개변수를 설정합니다.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database_name DB_USERNAME=your_username DB_PASSWORD=your_password
로그인 후 복사마이그레이션 실행: 데이터베이스 마이그레이션을 실행하여 필요한 테이블을 생성합니다.
php artisan migrate
로그인 후 복사
2단계: 경로 및 컨트롤러 설정
이 예에서는 DashboardController라는 컨트롤러를 만들고 이에 대한 세 가지 경로(/dashboard, /users, /roles)를 정의합니다. 컨트롤러 생성자에 필요한 권한 검사를 추가할 수 있습니다.
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class DashboardController extends Controller { public function __construct() { $this->middleware(['auth', 'permissions']); // 添加授权中间件 } public function index() { return view('dashboard'); } public function users() { return view('users'); } public function roles() { return view('roles'); } }
3단계: 권한 규칙 설정
다음으로 권한 규칙을 정의해야 합니다. 필요한 모든 권한을 정의하는Permissions.php라는 파일을 만듭니다. 비즈니스 요구에 따라 더 많은 권한 규칙을 수정하거나 추가할 수 있습니다.
return [ 'admin' => [ 'dashboard' => true, 'users' => true, 'roles' => true, ], 'editor' => [ 'dashboard' => true, 'users' => false, 'roles' => false, ], 'user' => [ 'dashboard' => true, 'users' => false, 'roles' => false, ], ];
4단계: 미들웨어 생성 및 등록
사용자의 권한을 확인하려면 미들웨어를 생성해야 합니다. /app/Http/Middleware 디렉터리에 CheckPermissions라는 미들웨어를 만듭니다.
<?php namespace AppHttpMiddleware; use Closure; use IlluminateSupportFacadesAuth; class CheckPermissions { public function handle($request, Closure $next) { $user = Auth::user(); $routeName = $request->route()->getName(); if (!$user->hasPermission($routeName)) { abort(403); } return $next($request); } }
보시다시피 미들웨어는 요청에서 경로 이름을 가져오고 Auth::user() 메서드를 사용하여 사용자에게 경로에 액세스할 수 있는 권한이 있는지 확인합니다. 권한이 없으면 403 Forbidden 상태가 반환됩니다.
그런 다음 미들웨어를 애플리케이션에 등록해야 합니다. /app/Http/Kernel.php 파일을 열고 $middlewareGroups 배열을 찾으세요. 웹 배열에 권한이라는 미들웨어를 추가합니다.
protected $middlewareGroups = [ 'web' => [ // ... AppHttpMiddlewareCheckPermissions::class, ], // ... ];
5단계: 보기 및 탐색 메뉴 만들기
보기 파일에 탐색 메뉴를 만들 때 사용자에게 각 링크에 대한 액세스 권한이 있는지 확인해야 합니다. Auth::user() 메소드를 사용하여 현재 사용자에게 기능에 대한 특정 권한이 있는지 확인하십시오.
<nav> <ul> <li><a href="{{ route('dashboard') }}" @if (!Auth::user()->hasPermission('dashboard'))disabled@endif>Dashboard</a></li> <li><a href="{{ route('users') }}" @if (!Auth::user()->hasPermission('users'))disabled@endif>Users</a></li> <li><a href="{{ route('roles') }}" @if (!Auth::user()->hasPermission('roles'))disabled@endif>Roles</a></li> </ul> </nav>
6단계: 권한 확인
사용자 모델에서는 hasPermission()이라는 메서드를 정의합니다. 이 메서드는 경로 이름을 수락한 다음 사용자가 해당 경로에 액세스할 수 있는지 확인합니다.
public function hasPermission($routeName) { $role = $this->role; $permissions = config('permissions.' . $role); return isset($permissions[$routeName]) && $permissions[$routeName]; }
우리는 config() 함수를 사용하여 권한 규칙을 읽고 사용자에게 해당 경로에 대한 액세스 권한이 있는지 확인합니다. 또한 사용자 모델의 역할 속성을 사용하여 사용자의 역할을 가져옵니다.
이제 우리는 사용자가 금지된 페이지에 액세스할 때 링크를 자동으로 비활성화하는 권한 기반 탐색 메뉴를 성공적으로 만들었습니다. 이 글이 Laravel을 사용하여 권한 기반 탐색 메뉴를 구현하는 방법을 익히는 데 도움이 되기를 바랍니다.
위 내용은 Laravel에서 권한 기반 탐색 메뉴를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel - Artisan Commands - Laravel 5.7은 새로운 명령을 처리하고 테스트하는 새로운 방법을 제공합니다. 여기에는 장인 명령을 테스트하는 새로운 기능이 포함되어 있으며 데모는 아래에 언급되어 있습니다.

Laravel - 페이지 매김 사용자 정의 - Laravel에는 사용자나 개발자가 페이지 매김 기능을 포함하는 데 도움이 되는 페이지 매김 기능이 포함되어 있습니다. Laravel 페이지네이터는 쿼리 빌더 및 Eloquent ORM과 통합되어 있습니다. 자동 페이지 매김 방법

Laravel 이메일 전송이 실패 할 때 반환 코드를 얻는 방법. Laravel을 사용하여 응용 프로그램을 개발할 때 종종 확인 코드를 보내야하는 상황이 발생합니다. 그리고 실제로 ...

laravel 일정 작업 실행 비 응답 문제 해결 Laravel의 일정 작업 일정을 사용할 때 많은 개발자 가이 문제에 직면합니다 : 스케줄 : 실행 ...

Laravel의 이메일을 처리하지 않는 방법은 LaRavel을 사용하는 것입니다.

DCAT를 사용할 때 DCATADMIN (LARAVEL-ADMIN)에서 데이터를 추가하려면 사용자 정의의 테이블 기능을 구현하는 방법 ...

Laravel - 덤프 서버 - Laravel 덤프 서버는 Laravel 5.7 버전과 함께 제공됩니다. 이전 버전에는 덤프 서버가 포함되어 있지 않습니다. 덤프 서버는 laravel/laravel 작곡가 파일의 개발 종속성이 됩니다.

Laravel 프레임 워크 및 Laravel 프레임 워크 및 Redis를 사용할 때 Redis 연결을 공유하는 데 영향을 줄 수 있습니다. 개발자는 문제가 발생할 수 있습니다. 구성을 통해 ...
