Soldemy
0%

Bài đọc

Policy và quyền truy cập: thực hành có hướng dẫn

3 phút đọc

Đây là bài 3 của chương 5: Policy và quyền truy cập, thuộc khóa demo Laravel Backend. Nội dung được dùng để trải nghiệm cấu trúc chương trình học; hãy thực hành trên dữ liệu và môi trường thử nghiệm riêng. Trong dự án xuyên suốt, bạn sẽ xây dựng backend quản lý khóa học, bài học và tiến độ học tập.

Mục tiêu cụ thể

Xác thực trả lời người dùng là ai; phân quyền quyết định họ được làm gì với tài nguyên cụ thể. Policy nên kiểm tra cả quan hệ sở hữu và quyền quản trị khi phù hợp.

Đề bài thực hành

Thiết kế quyền sửa khóa học: tác giả sửa được của mình, người khác nhận 403; bổ sung trường hợp quản trị theo yêu cầu riêng.

Quy trình từng bước

  • Xác định đầu vào, đầu ra và trạng thái trước khi bắt đầu. Với policy và quyền truy cập, hãy ghi lại kết quả bạn mong muốn trước khi chạy ví dụ.
  • Tạo bản thử nhỏ nhất trong một thư mục hoặc môi trường riêng. Chỉ dùng dữ liệu giả; không sao chép token, tài khoản hoặc dữ liệu cá nhân vào bài tập.
  • Thực hiện yêu cầu: Thiết kế quyền sửa khóa học: tác giả sửa được của mình, người khác nhận 403; bổ sung trường hợp quản trị theo yêu cầu riêng.
  • Quan sát kết quả và so sánh từng điều kiện chấp nhận. Khi chưa đạt, thay đổi một yếu tố mỗi lần để biết thay đổi nào tạo ra tác động.
  • Lưu kết quả cùng ghi chú giải thích quyết định. Người khác cần tái hiện được thao tác mà không phải đoán cấu hình hoặc dữ liệu ban đầu.

Điểm khởi đầu

PHP
public function update(User $user, Course $course): bool
{
    return $course->instructor_id === $user->id;
}
// Trong controller:
// Gate::authorize("update", $course);

Đối chiếu kết quả

  • Người ngoài không sửa được tài nguyên
  • Kiểm tra quyền trước thao tác ghi
  • Bài kiểm tra có ít nhất hai người dùng

Nếu kết quả khác dự kiến

Ẩn nút trên giao diện không ngăn request trực tiếp. Phải kiểm tra quyền tại endpoint ghi dữ liệu.

Chụp hoặc ghi lại đầu vào và đầu ra trước khi sửa. Xác nhận tệp đã lưu, đúng môi trường đang chạy và dữ liệu thử vẫn giữ nguyên. Sau khi sửa, chạy lại cả trường hợp ban đầu lẫn một trường hợp biên để tránh sửa được một nhánh nhưng làm hỏng nhánh khác.

Sản phẩm cần lưu

  • Mã nguồn hoặc sơ đồ của bản thử.
  • Dữ liệu đầu vào có thể dùng lại.
  • Ba kết quả kiểm tra kèm giải thích.
  • Một ghi chú về điều bạn sẽ làm khác nếu triển khai cho người dùng thật.

Hỏi đáp

Đăng nhập để đặt câu hỏi và tham gia thảo luận.