Làm cách nào để đặt quyền và vai trò trong laravel?

Ví dụ: chúng tôi có thể chỉ định người dùng là quản trị viên, kế toán, nhà điều hành hay người dùng cuối và giới hạn quyền truy cập vào các tài nguyên hoặc tác vụ cụ thể dựa trên vai trò và trách nhiệm của họĐiều này bảo vệ dữ liệu nhạy cảm và đảm bảo người dùng chỉ có thể truy cập thông tin và thực hiện các hành động mà họ được phép

 

Để triển khai Vai trò và Quyền, chúng tôi sử dụng gói “Spatie vai trò và quyền”. Gói này cung cấp API để xử lý vai trò và quyền dễ dàng hơn. Ngoài ra, mã cuối cùng thân thiện với người đọc và dễ hiểu hơn.

 

Giới thiệu về quyền của Vai trò Spatie 

Gói quyền của vai trò Spatie cung cấp cho chúng tôi cách quản lý mức kiểm soát Truy cập trong Laravel. Sử dụng gói này, chúng tôi có thể gán một hoặc nhiều vai trò và quyền cho người dùng.  Chúng ta không cần viết các quy tắc trong Chính sách hoặc Cổng, chúng ta chỉ cần gọi hàm với các đối số bắt buộc.


Cấu trúc cơ sở dữ liệu

Gói này sẽ tạo 5 bảng trong cơ sở dữ liệu, đó là.  

  1. vai trò. Trong bảng này, chúng tôi lưu trữ một danh sách các vai trò
  2. Quyền. Lưu trữ danh sách các quyền
  3. Vai trò_có_quyền. Lưu trữ danh sách role_id được đồng bộ hóa với permission_id
  4. Model_has_roles. Bảng này chỉ có 3 cột role_id, model_id và model_type
    • role_id là khóa ngoại từ bảng vai trò
    • mô hình là một khóa ngoại từ bảng người dùng
    • model_type lưu trữ đường dẫn của mô hình người dùng. Giá trị mặc định của cột model_type là ‘Ứng dụng/Người dùng’, vì theo cấu trúc của Laravel, bảng người dùng mặc định tồn tại ở cùng một vị trí

      Xin chào Dev, Vì vậy, hôm nay chúng ta sẽ tìm hiểu về Laravel 9 User Roles and Permissions Tutorial Ví dụ. Hướng dẫn này sẽ bao gồm hướng dẫn về vai trò và quyền của người dùng trong laravel 9 với ví dụ

      Cuối cùng, chúng ta sẽ sử dụng gói quyền spatie/laravel cho hướng dẫn này. Gói trình soạn thảo quyền và vai trò Spatie cung cấp cách tạo ACL trong laravel 9. Họ cung cấp cách…

      Trong bài đăng này, tôi sẽ chia sẻ cách triển khai Phương thức ACL Vai trò & Quyền trên Laravel 8 và 9 với hướng dẫn từng bước sẽ giúp bạn hiểu quy trình. Chúng tôi biết rằng việc triển khai vai trò và quyền của người dùng là một trong những chức năng cơ bản cần triển khai trong các ứng dụng web của chúng tôi để hạn chế người dùng cụ thể chỉ quản trị viên mới được phép truy cập. Đó là lý do tại sao chúng ta cần triển khai người dùng dựa trên vai trò với các quyền được chỉ định. Trong ví dụ này, tôi tự động đọc route dưới dạng quyền thông qua phần mềm trung gian để bạn không cần phải thêm thủ công. Chúng tôi cũng có một tính năng trong ví dụ này để thêm quyền theo cách thủ công

       

      Bằng cách làm theo hướng dẫn này, việc triển khai quyền Laravel và bảo mật tài khoản người dùng của bạn sẽ dễ dàng hơn

       

      Trong ví dụ này tôi đã thêm các mô-đun sau

       

      • Quản lý người dùng
      • - Tạo quản lý người dùng đơn giản bằng Laravel 9 để bạn dễ dàng xin phép Laravel hơn
      • Quản lý vai trò
      • - Quản lý vai trò đơn giản sẽ giúp chúng tôi thêm vai trò cho tài khoản người dùng và xác định người dùng đã gán quyền Laravel
      • Quản lý quyền
      • - Quản lý quyền của Laravel sẽ liệt kê tất cả các tên tuyến đường bằng cách sử dụng lệnh bảng điều khiển Laravel
      • Quản lý sản phẩm
      • - Quản lý sản phẩm đơn giản và đăng ký quyền Laravel với từng vai trò là người dùng

       

      Với xác thực mà bạn có thể làm theo trong hướng dẫn trước của tôi

       

      Làm cách nào để đặt quyền và vai trò trong laravel?

       

      Làm cách nào để đặt quyền và vai trò trong laravel?

      Làm cách nào để đặt quyền và vai trò trong laravel?

       

      Vì vậy, hãy bắt đầu

       

      Bước 1. Cài đặt Laravel

      Tôi cho rằng bạn đã có dự án của mình ở địa phương. Để rút ngắn bài đăng này, vui lòng làm theo hướng dẫn trước của tôi với chức năng xác thực

       

      Hoặc chạy và sao chép hướng dẫn trước đây của tôi về xác thực

      git clone https://github.com/codeanddeploy/laravel8-authentication-example.git

       

      Sau đó, khi bạn sao chép nó, chỉ cần sao chép và dán nó vào htdocs của bạn nếu bạn sử dụng Wampp trên Windows

       

      Sau đó điều hướng dự án của bạn và chạy lệnh này

      composer update

       

      Bước 2. Cài đặt gói

      Tiếp theo, chúng ta cần cài đặt các gói Laravel cho ACL và Form Collections. Chạy lệnh sau bên dưới

      composer require spatie/laravel-permission
      composer require laravelcollective/html

       

      Sau đó chạy lệnh này

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

       

      Sau khi chạy lệnh trên, bạn sẽ thấy một tệp cấu hình có tên là quyền. php và di chuyển với *_permission_tables. php. Bây giờ hãy chạy lệnh để di chuyển các bảng quyền

       

      php artisan migrate

       

      Bước 3. Tạo bài di chuyển

      Tiếp theo, chúng tôi sẽ tạo một di chuyển cho bảng bài viết. Chạy lệnh sau để làm điều đó

      php artisan make:migration create_posts_table

       

      Sau đó, hãy thực hiện di chuyển sau của chúng tôi. Xem bên dưới mã hoàn chỉnh

      id();
                  $table->unsignedBigInteger('user_id');
                  $table->string('title', 70);
                  $table->string('description', 320);
                  $table->text('body');
                  $table->timestamps();
      
                  $table->foreign('user_id')
                      ->references('id')
                      ->on('users')
                      ->onDelete('cascade');
              });
          }
      
          /**
           * Reverse the migrations.
           *
           * @return void
           */
          public function down()
          {
              Schema::dropIfExists('posts');
          }
      }
      

       

      Sau đó chạy, di chuyển

      php artisan migrate

       

      Bước 4. Tạo mô hình

      Tiếp theo, chúng tôi sẽ tạo các mô hình của chúng tôi và thiết lập các chi tiết quan trọng. Nếu bạn đang sử dụng hướng dẫn xác thực trước đây của tôi, bạn chỉ cần cập nhật mô hình Người dùng. Xem các mã hoàn chỉnh sau đây

       

      ứng dụng/Mô hình/Người dùng. php

       'datetime',
          ];
      
          /**
           * Always encrypt password when it is updated.
           *
           * @param $value
           * @return string
           */
          public function setPasswordAttribute($value)
          {
              $this->attributes['password'] = bcrypt($value);
          }
      }
      

       

      Tiếp theo, chúng ta sẽ tạo một model cho Post. Chạy lệnh sau

      composer update
      0

       

      Đăng mã mô hình bên dưới

       

      ứng dụng/Mô hình/Bài đăng. php

      composer update
      1

       

      Bước 5. Thêm phần mềm trung gian

      Trong ví dụ này, tôi đang thực hiện một phần mềm trung gian tùy chỉnh cho Quyền Laravel của chúng tôi để đọc tuyến đường hiện tại nếu chúng tôi cho phép

       

      Hãy tạo phần mềm trung gian tùy chỉnh của chúng tôi. Chạy lệnh sau

      composer update
      2

       

      Và đây là mã tùy chỉnh của lớp

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      9 của chúng tôi. Điều hướng đến Ứng dụng\Http\Middleware\PermissionMiddleware. php

       

      composer update
      3

       

       

      Sau đó, hãy đăng ký phần mềm trung gian đã tạo của chúng tôi và phần mềm trung gian Spatie mặc định

       

      Bây giờ, hãy điều hướng tệp app/Http/Kernel. php thì trong thuộc tính $routeMiddleware chúng ta sẽ thêm các phần mềm trung gian sau

       

      composer update
      4

       

      Như bạn có thể thấy ở trên, chúng tôi đã thêm phần mềm trung gian tùy chỉnh của mình

       

      Bước 6. Thêm tuyến đường

      Bây giờ, hãy thêm các tuyến đường của chúng tôi, nếu bạn đang sử dụng xác thực Laravel 9 của tôi, chỉ cần chỉnh sửa hoặc sao chép mã tuyến đường hoàn chỉnh bên dưới

       

      composer update
      5

       

      Bước 7. Thêm bộ điều khiển

      Trong bước này, chúng tôi sẽ thêm bộ điều khiển cho Người dùng, Bài đăng, Vai trò và Quyền, vui lòng xem từng bộ điều khiển bên dưới

       

      Ứng dụng\Http\Controllers\UsersController. php

      composer update
      6

       

      Ứng dụng\Http\Controllers\PostController. php

      composer update
      7

       

      Ứng dụng\Http\Controllers\RolesController. php

      composer update
      8

       

      Ứng dụng\Http\Controllers\PermissionsController. php

      composer update
      9

       

      Bước 8. Thêm yêu cầu

      Trong

      php artisan migrate
      0 của tôi, tôi đã triển khai một yêu cầu cụ thể cho từng hành động, nó sẽ giúp rút ngắn mã của bạn và đặt các hàm khác cũng như kiểm tra vào một lớp khác và mã của bạn dễ đọc hơn

       

      Chạy các lệnh sau bên dưới để tạo yêu cầu

      composer require spatie/laravel-permission
      0

       

      Sau khi hoàn thành, vui lòng xem mã của từng yêu cầu

       

      Ứng dụng\Http\Requests\StoreUserRequest. php

      composer require spatie/laravel-permission
      1

       

      Ứng dụng\Http\Requests\UpdateUserRequest. php

      composer require spatie/laravel-permission
      2

       

      Bước 9. Thêm tập tin Blade

      Trong bài đăng này, chúng tôi sẽ tạo các tệp phiến của chúng tôi để xem và bố cục của chúng tôi

       

      tài nguyên/lượt xem/bố cục/ứng dụng chính. lưỡi. php

      composer require spatie/laravel-permission
      3

       

      tài nguyên/lượt xem/bố cục/phần/thông báo. lưỡi. php

      composer require spatie/laravel-permission
      4

       

      tài nguyên/lượt xem/bố cục/phần/thanh điều hướng. lưỡi. php

      composer require spatie/laravel-permission
      5

       

      tài nguyên/lượt xem/quyền/tạo. lưỡi. php

      composer require spatie/laravel-permission
      6

       

      tài nguyên/lượt xem/quyền/chỉnh sửa. lưỡi. php

      composer require spatie/laravel-permission
      7

       

       

      tài nguyên/lượt xem/quyền/chỉ mục. lưỡi. php

      composer require spatie/laravel-permission
      8

       

      tài nguyên/lượt xem/bài đăng/tạo. lưỡi. php

      composer require spatie/laravel-permission
      9

       

       

      tài nguyên/lượt xem/bài đăng/chỉnh sửa. lưỡi. php

      composer require laravelcollective/html
      0

       

      tài nguyên/lượt xem/bài đăng/chỉ mục. lưỡi. php

      composer require laravelcollective/html
      1

       

      tài nguyên/lượt xem/bài đăng/hiển thị. lưỡi. php

      composer require laravelcollective/html
      2

       

      tài nguyên/lượt xem/vai trò/tạo. lưỡi. php

      composer require laravelcollective/html
      3

       

      tài nguyên/lượt xem/vai trò/chỉnh sửa. lưỡi. php

      composer require laravelcollective/html
      4

       

      tài nguyên/lượt xem/vai trò/chỉ mục. lưỡi. php

      composer require laravelcollective/html
      5

       

      tài nguyên/lượt xem/vai trò/hiển thị. lưỡi. php

      composer require laravelcollective/html
      6

       

       

      tài nguyên/lượt xem/người dùng/tạo. lưỡi. php

      composer require laravelcollective/html
      7

       

       

      tài nguyên/lượt xem/người dùng/chỉnh sửa. lưỡi. php

      composer require laravelcollective/html
      8

       

       

      tài nguyên/lượt xem/người dùng/chỉ mục. lưỡi. php

      composer require laravelcollective/html
      9

       

       

      tài nguyên/lượt xem/người dùng/hiển thị. lưỡi. php

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      0

       

      Bước 10. Lệnh tạo quyền cho Laravel

      Tiếp theo, chúng tôi sẽ tạo một lệnh để tạo quyền Laravel của chúng tôi bằng cách sử dụng tên tuyến đường. Chạy lệnh bên dưới

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      1

       

       

      Điều hướng Ứng dụng\Console\Commands\CreateRoutePermissionsCommand. php và sao chép mã bên dưới

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      2

       

      Sau đó, tiếp theo, hãy chạy lệnh đã tạo

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      3

       

      GHI CHÚ. Nếu bạn đang trong quá trình sản xuất, vui lòng thêm bộ lập lịch cho lệnh này để bạn không cần phải chạy thủ công

       

      Bước 11. Thêm người dùng quản trị Seeder

      Tiếp theo, chúng ta nên có người dùng mặc định là quản trị viên để bạn có thể truy cập hệ thống của mình bằng người dùng mặc định đã tạo

       

      Chạy lệnh sau

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      4

       

      Sau đó điều hướng Database\Seeders\CreateAdminUserSeeder. php và sao chép mã dưới đây

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      5

       

      Sau đó chạy lệnh sau

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      6

       

      Bây giờ bạn đã có một quản trị viên mà bạn có thể sử dụng để đăng nhập và kiểm tra các Quyền và Vai trò Người dùng Laravel 9 ACL của mình

       

      Bây giờ bạn đã sẵn sàng. Chạy lệnh sau để kiểm tra

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      7

       

      Sau đó truy cập nó vào trình duyệt của bạn

      php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
      8

       

      Đừng quên rằng thông tin đăng nhập của bạn là

      e-mail. quản trị viên

      mật khẩu mở khóa. quản trị123

       

      Tôi nghĩ đó là khá nhiều nó. tôi hy vọng nó sẽ giúp. Cảm ơn bạn đã đọc

       

      ĐỌC CŨNG. Ví dụ về Thiết lập giám sát Laravel 9 (Bạn có thể triển khai điều này giống như một tác vụ đang chạy trong nền - như gửi lời mời qua email của người dùng)

      Làm cách nào để gán vai trò cho người dùng trong laravel?

      $role = Vai trò. findByName('nhà văn'); . Bây giờ người dùng có thể chỉnh sửa bài viết và thêm bài viết

      Làm cách nào để có được sự cho phép của người dùng trong laravel?

      Có thể gán quyền cho vai trò bằng 1 trong các phương pháp này. $role->givePermissionTo($permission); . $role->syncPermissions($permissions); Multiple permissions can be synced to a role using 1 of these methods: $role->syncPermissions($permissions); $permission->syncRoles($roles);

      Quyền của laravel là gì?

      Quyền của Laravel cho phép nhà phát triển cung cấp quyền kiểm soát truy cập cho người dùng, thông qua Vai trò và Kiểm soát truy cập dựa trên quyền (ACL) . Do đó, người ta có thể chỉnh sửa và cung cấp quyền truy cập cho người dùng, từ phần cuối của trang web.