laravel에서 백그라운드 권한을 설정하는 방법(자세한 단계)

PHPz
풀어 주다: 2023-04-03 19:23:31
원래의
1278명이 탐색했습니다.

Laravel은 개발자에게 개발 프로세스 속도를 높일 수 있는 다양한 편의성과 도구를 제공하는 인기 있는 PHP 프레임워크입니다. 특히 유용한 기능 중 하나는 백엔드 관리 권한 시스템입니다. Laravel의 백엔드 권한을 설정하면 승인된 사용자만 애플리케이션의 관리 인터페이스에 액세스할 수 있습니다. 이번 글에서는 Laravel에서 백그라운드 권한을 설정하는 방법을 다루겠습니다.

1단계: 필수 패키지 설치

Laravel에서 백그라운드 권한을 설정하려면 다음 패키지를 설치해야 합니다.

  • Laravel 프레임워크
  • Laravel Permission

Laravel Permission은 권한 시스템을 쉽게 추가할 수 있는 널리 사용되는 권한 관리 패키지입니다. 너의 어플리케이션. 다음 명령을 사용하여 작곡가 패키지 관리자를 통해 Laravel 프로젝트에 설치할 수 있습니다:

composer require spatie/laravel-permission
로그인 후 복사

설치가 완료된 후 config/app.php에 서비스 공급자와 파사드를 추가해야 합니다. config/app.php中添加服务提供商和门面:

'providers' => [
    ...
    Spatie\Permission\PermissionServiceProvider::class,
],

'aliases' => [
    ...
    'Permission' => Spatie\Permission\Models\Permission::class,
    'Role' => Spatie\Permission\Models\Role::class,
],
로그인 후 복사

步骤二:创建路由和控制器

现在,您需要创建一组路由和控制器来管理应用程序权限。您可以在Web路由文件中定义这些路由,例如:

Route::group(['middleware' => ['auth']], function () {

    // 管理角色和权限
    Route::resource('roles', 'RoleController');
    Route::resource('permissions', 'PermissionController');

    // 管理用户角色分配
    Route::resource('users', 'UserController');
    Route::post('users/{user}/assign-roles', 'UserController@assignRoles')->name('users.assign.roles');
    Route::delete('users/{user}/remove-roles/{role}', 'UserController@removeRoles')->name('users.remove.roles');

});
로그인 후 복사

此示例中,我们定义了四个不同的路由:

  • roles:用于管理应用程序中的角色。
  • permissions:用于管理应用程序中的权限。
  • users:用于管理应用程序中的用户,以及为他们分配角色。
  • assign-rolesremove-roles:用于为应用程序中的用户分配和删除角色。

下一步,创建控制器,例如:

php artisan make:controller RoleController
로그인 후 복사

在控制器中,您需要编写与路由匹配的方法。例如,当用户访问roles路由时,Laravel将调用RoleController中的index方法:

public function index()
{
    $roles = Role::paginate(10);

    return view('roles.index', compact('roles'));
}
로그인 후 복사

这将返回一个包含角色列表的视图,并使用Laravel嵌套路由将其发送回浏览器。在视图中,您可以使用Laravel Blade模板引擎渲染数据,并在需要的情况下向用户显示表单和按钮。

步骤三:定义应用程序权限

为了限制用户对应用程序管理区域的访问,您需要定义哪些角色可以执行哪些操作。例如,您可以将管理员角色分配给具有完全访问权限的用户,而只能编辑文章的编辑者角色分配给另一组用户。

在Laravel Permission软件包中,您可以使用PermissionRole模型来定义和管理这些权限。例如,要创建一个名为“编辑文章”的权限,您可以使用以下代码:

use Spatie\Permission\Models\Permission;

$editArticles = Permission::create(['name' => 'edit articles']);
로그인 후 복사

这将创建一个新的权限,并将其存储在数据库中。现在,您可以将其分配给任何其他角色,如管理员或编辑者。

步骤四:使用中间件来保护路由

现在,您需要使用auth中间件来限制对管理路由的访问。此中间件将确保用户必须登录才能访问受保护的路由。

您可以使用Laravel的Route::group

Route::group(['middleware' => ['auth']], function () {
    // 受保护的路由
});
로그인 후 복사
2단계: 경로 및 컨트롤러 생성

이제 애플리케이션 권한을 관리하기 위한 경로 및 컨트롤러 세트를 생성해야 합니다. 웹 라우팅 파일에서 이러한 경로를 정의할 수 있습니다. 예:

if(auth()->user()->can('edit articles')){
    // 可以编辑文章
} else {
    // 无权限
}
로그인 후 복사

이 예에서는 4가지 경로를 정의했습니다.

roles: 애플리케이션에서 역할을 관리하는 데 사용됩니다.

권한: 애플리케이션에서 권한을 관리하는 데 사용됩니다.

users: 애플리케이션에서 사용자를 관리하고 사용자에게 역할을 할당하는 데 사용됩니다.

🎜역할 할당역할 제거: 애플리케이션에서 사용자에게 역할을 할당하고 제거하는 데 사용됩니다. 🎜🎜🎜 다음으로 컨트롤러를 만듭니다. 예: 🎜rrreee🎜 컨트롤러에서 경로와 일치하는 메서드를 작성해야 합니다. 예를 들어, 사용자가 roles 경로에 액세스하면 Laravel은 RoleController에서 index 메서드를 호출합니다. 🎜rrreee🎜이것은 다음 목록을 반환합니다. 역할을 보고 Laravel 중첩 라우팅을 사용하여 브라우저로 다시 보냅니다. 뷰에서는 Laravel Blade 템플릿 엔진을 사용하여 데이터를 렌더링하고 필요한 경우 사용자에게 양식과 버튼을 표시합니다. 🎜🎜3단계: 애플리케이션 권한 정의🎜🎜 애플리케이션 관리 영역에 대한 사용자 액세스를 제한하려면 어떤 역할이 어떤 작업을 수행할 수 있는지 정의해야 합니다. 예를 들어 전체 액세스 권한이 있는 사용자에게 관리자 역할을 할당하고, 기사 편집만 가능한 편집자 역할을 다른 사용자 집합에 할당할 수 있습니다. 🎜🎜Laravel 권한 패키지에서는 PermissionRole 모델을 사용하여 이러한 권한을 정의하고 관리할 수 있습니다. 예를 들어 "게시물 편집"이라는 권한을 생성하려면 다음 코드를 사용합니다. 🎜rrreee🎜 이렇게 하면 새 권한이 생성되어 데이터베이스에 저장됩니다. 이제 관리자나 편집자와 같은 다른 역할에 할당할 수 있습니다. 🎜🎜4단계: 미들웨어를 사용하여 경로 보호🎜🎜이제 auth 미들웨어를 사용하여 관리 경로에 대한 액세스를 제한해야 합니다. 이 미들웨어는 사용자가 보호된 경로에 액세스하려면 로그인해야 하는지 확인합니다. 🎜🎜Laravel의 Route::group 메소드를 사용하여 경로 정의를 래핑하고 미들웨어를 전체 그룹에 적용할 수 있습니다. 🎜rrreee🎜이제 인증된 사용자만 이 경로에 액세스할 수 있습니다. 🎜🎜5단계: Laravel 권한을 사용하여 액세스 승인🎜🎜마지막으로 Laravel 권한 패키지를 사용하여 특정 작업을 수행할 수 있는 역할을 제어해야 합니다. 예를 들어, "기사 편집" 권한이 있는 사용자만 앱에서 기사를 편집할 수 있도록 하려면 다음 코드를 사용하면 됩니다. 🎜rrreee🎜 이 코드 조각은 현재 인증된 사용자에게 "기사 편집" 권한이 있는지 확인합니다. 사용자에게 권한이 있으면 관련 작업을 수행할 수 있습니다. 그렇지 않으면 변경 권한이 없습니다. 🎜🎜결론🎜🎜 Laravel에서 백엔드 관리자 권한을 설정하려면 몇 가지 단계가 필요하지만 일단 익숙해지면 Laravel 권한 패키지를 사용하여 어떤 사용자가 어떤 작업을 수행할 수 있는지 쉽게 제어할 수 있습니다. 이렇게 하면 승인된 사용자만 애플리케이션 관리 영역에 액세스할 수 있으므로 데이터 보안이 보호되고 보안 위험이 줄어듭니다. 🎜

위 내용은 laravel에서 백그라운드 권한을 설정하는 방법(자세한 단계)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿