>PHP 프레임워크 >Laravel >Laravel에서 권한 기반 탐색 메뉴를 구현하는 방법

Laravel에서 권한 기반 탐색 메뉴를 구현하는 방법

WBOY
WBOY원래의
2023-11-02 18:52:481419검색

Laravel에서 권한 기반 탐색 메뉴를 구현하는 방법

웹사이트와 애플리케이션의 기능이 점점 더 복잡해짐에 따라 권한 관리가 중요해졌습니다. 사용자가 인증을 통해 로그인하면 권한이 있는 페이지와 기능에 액세스할 수 있지만 권한이 없는 페이지와 기능에는 액세스할 수 없기를 원합니다. 이 글에서는 사용자가 볼 수 있는 내용을 쉽게 제어할 수 있도록 Laravel에서 권한 기반 탐색 메뉴를 구현하는 방법을 설명합니다.

1단계: Laravel 설치 및 데이터베이스 구성

Laravel에 이미 익숙하다면 이 단계를 건너뛸 수 있습니다. 그렇지 않은 경우 다음 단계에 따라 Laravel을 설치하세요.

  1. Composer 설치: Composer를 아직 설치하지 않은 경우 공식 가이드에 따라 먼저 설치하세요.
  2. Laravel 설치: 터미널을 열고 Composer를 사용하여 Laravel을 설치합니다.

    composer global require laravel/installer
  3. 데이터베이스 구성: .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
  4. 마이그레이션 실행: 데이터베이스 마이그레이션을 실행하여 필요한 테이블을 생성합니다.

    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.