Ủy quyền là rất quan trọng đối với các ứng dụng web. Nó cấp cho đúng người dùng quyền truy cập vào các phần trong ứng dụng web của bạn trên cơ sở vai trò và quyền của họ. Trong một ứng dụng đơn giản, việc thêm ủy quyền trong ứng dụng vào ứng dụng của bạn tương đối đơn giản. Nhưng với các ứng dụng phức tạp, cần phải tạo các vai trò và quyền khác nhau, điều này có thể trở nên khó quản lý
Trong hướng dẫn này, bạn sẽ học cách sử dụng Cerbos để thêm quyền cho một Node. js, kết quả là đơn giản hóa quy trình ủy quyền
Thiết lập nút. ứng dụng js
Trước khi chúng tôi bắt đầu với Cerbos, bạn sẽ cần tạo một Nút mới. js [hoặc sử dụng ứng dụng hiện có]. Hãy thiết lập một bài đăng trên blog Node. ứng dụng js làm ví dụ của chúng tôi
Xác định quyền của người dùng
Ứng dụng đăng bài trên blog sẽ có hai vai trò. thành viên và người điều hành
Vai trò thành viên sẽ có các quyền sau
- tạo một bài đăng blog mới
- cập nhật các bài đăng trên blog được tạo bởi thành viên
- xóa bài đăng trên blog được tạo bởi thành viên
- xem tất cả các bài đăng trên blog được tạo bởi tất cả các thành viên
- xem một bài đăng trên blog được tạo bởi bất kỳ thành viên nào
Vai trò người điều hành sẽ có các quyền sau
- xem tất cả các bài đăng trên blog được tạo bởi tất cả các thành viên
- xem một bài đăng trên blog được tạo bởi bất kỳ thành viên nào
- vô hiệu hóa và kích hoạt một bài viết độc hại
Thành viên và người điều hành không thể thực hiện bất kỳ hành động nào nếu họ bị vô hiệu hóa
Tạo ứng dụng
Bước 1
Khởi chạy thiết bị đầu cuối hoặc công cụ dòng lệnh của bạn và tạo một thư mục cho ứng dụng mới
mkdir blogpost
Bước 2
Di chuyển vào thư mục bài đăng trên blog và chạy lệnh bên dưới—tệp
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
0 sẽ được tạonpm init -y
Bước 3
Mở tệp
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
0 và dán như sau{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
Hai gói chính nằm trong phần phụ thuộc của
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
0—Cerbos và Express- Cerbos là gói ủy quyền chịu trách nhiệm tạo vai trò và quyền
- Express là một nút. js được sử dụng để thiết lập và tạo các ứng dụng phía máy chủ nhanh hơn
Trong
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
3, có bốn gói. Chai, Chai HTTP, Mocha và Nodemon. Chai, Chai HTTP và Mocha được sử dụng để chạy các tập lệnh kiểm tra tự động trong và sau quá trình phát triển. Nodemon được sử dụng để đảm bảo máy chủ ứng dụng được khởi động lại bất cứ khi nào có thay đổi đối với bất kỳ tệp nào trong quá trình phát triểnBước 4
Chạy
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
4 để cài đặt các gói trong gói. jsonBước 5
Tạo các tệp sau
5, chứa cấu hình cơ sở của ứng dụng demo{ "name": "blogpost", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "nodemon index.js", "test": "mocha --exit --recursive test/**/*.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@cerbos/grpc": "^0.6.0", "express": "^4.17.1" }, "devDependencies": { "chai": "^4.3.4", "chai-http": "^4.3.0", "mocha": "^9.0.3", "nodemon": "^2.0.12" } }
6, chứa tất cả các tuyến đường cần thiết trong ứng dụng demo{ "name": "blogpost", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "nodemon index.js", "test": "mocha --exit --recursive test/**/*.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@cerbos/grpc": "^0.6.0", "express": "^4.17.1" }, "devDependencies": { "chai": "^4.3.4", "chai-http": "^4.3.0", "mocha": "^9.0.3", "nodemon": "^2.0.12" } }
7, xuất cơ sở dữ liệu demo. Vì lợi ích của bản trình diễn này, bạn sẽ sử dụng một mảng để lưu trữ dữ liệu—bạn có thể sử dụng bất kỳ hệ thống cơ sở dữ liệu nào bạn muốn{ "name": "blogpost", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "nodemon index.js", "test": "mocha --exit --recursive test/**/*.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@cerbos/grpc": "^0.6.0", "express": "^4.17.1" }, "devDependencies": { "chai": "^4.3.4", "chai-http": "^4.3.0", "mocha": "^9.0.3", "nodemon": "^2.0.12" } }
8, chứa logic ủy quyền của Cerbos{ "name": "blogpost", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "nodemon index.js", "test": "mocha --exit --recursive test/**/*.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@cerbos/grpc": "^0.6.0", "express": "^4.17.1" }, "devDependencies": { "chai": "^4.3.4", "chai-http": "^4.3.0", "mocha": "^9.0.3", "nodemon": "^2.0.12" } }
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
9Sau đó, dán các mã sau vào các tệp tương ứng
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
3____14{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
5Cơ sở dữ liệu demo bao gồm năm người dùng, bao gồm ba thành viên và hai người điều hành. Trong ba thành viên, có hai thành viên tích cực và một thành viên bị khóa. Trong số hai người điều hành, một người là người điều hành tích cực và người kia là người điều hành bị chặn
Trong thời gian chờ đợi,
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
8 sẽ chứa một giàn giáo trống để xem ứng dụng hoạt động như thế nào, trước khi tích hợp gói ủy quyền Cerbos{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
7Bước 6
Ứng dụng demo đã được thiết lập thành công. Bây giờ là lúc để xem ứng dụng trông như thế nào trước khi tích hợp gói ủy quyền Cerbos
Khởi động máy chủ bằng lệnh bên dưới
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
31Bạn sẽ thấy thông tin sau trong thiết bị đầu cuối của mình để cho biết ứng dụng của bạn đang chạy trên cổng 8000
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
9Kiểm tra ứng dụng mà không được phép
Bây giờ là lúc để kiểm tra ứng dụng. Bạn có thể sử dụng bất kỳ ứng dụng khách HTTP nào mà bạn chọn, chẳng hạn như Postman, Insomnia hoặc cURL. Đối với ví dụ này, chúng tôi sẽ sử dụng cURL
Thực hiện các yêu cầu sau—bạn sẽ thấy không có giới hạn nào. Thay đổi user_ID từ 1 đến 5 và bạn sẽ nhận được phản hồi hợp lệ
Tạo bài đăng
npm init -y
0Cập nhật bài viết
npm init -y
1Xem tất cả bài viết
npm init -y
0Xem một bài đăng
npm init -y
1cờ đăng
npm init -y
2Xóa bài đăng
npm init -y
3Tích hợp ủy quyền Cerbos
Khi mọi thứ ổn định, ứng dụng được mở cho các hành động được ủy quyền và trái phép. Bây giờ, đã đến lúc triển khai Cerbos để đảm bảo người dùng chỉ thực hiện các hoạt động được ủy quyền
Để bắt đầu, cần tạo một thư mục chính sách để lưu trữ các chính sách của Cerbos. Cerbos sử dụng các chính sách này để xác định người dùng nào có quyền truy cập vào tài nguyên nào. Trong thư mục bài đăng trên blog, hãy chạy lệnh bên dưới để tạo thư mục có tên là Cerbos. Điều này sẽ chứa thư mục chính sách
npm init -y
4Tiếp theo, chuyển sang thư mục chính sách và tạo hai tệp YAML chính sách.
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
32 và {
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
33Các dẫn xuất_roles. yaml Mô tả tệp
Vai trò phái sinh cho phép bạn tạo vai trò động từ một hoặc nhiều vai trò chính. Ví dụ: thành viên vai trò được phép xem tất cả các bài đăng trên blog do các thành viên khác tạo nhưng không được phép thực hiện bất kỳ thao tác chỉnh sửa nào. Để cho phép chủ sở hữu của một bài đăng trên blog cũng là thành viên thực hiện các chỉnh sửa trên bài đăng trên blog của họ, vai trò dẫn xuất được gọi là chủ sở hữu được tạo để cấp quyền này
Bây giờ hãy dán mã bên dưới vào
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
32 của bạnnpm init -y
5- apiVersion là phiên bản hiện tại của vai trò bắt nguồn từ Cerbos
- dẫn xuấtRoles chứa danh sách các vai trò người dùng mà ứng dụng của bạn sẽ được sử dụng;
- dẫn xuấtRoles [tên] cho phép bạn phân biệt giữa nhiều tệp vai trò dẫn xuất trong ứng dụng có thể được sử dụng trong chính sách tài nguyên của bạn
- Vai trò dẫn xuất [định nghĩa] là nơi bạn sẽ tìm thấy tất cả các vai trò dự kiến sẽ được sử dụng trong ứng dụng
- tên là tên được đặt cho các vai trò dẫn xuất được tạo; . Với sự trợ giúp của các vai trò dẫn xuất, có thể tạo một vai trò khác sẽ cấp quyền cho tài nguyên
- parentRoles là các vai trò mà vai trò dẫn xuất áp dụng, e. g. thành viên và người điều hành
- điều kiện là một tập hợp các biểu thức phải đúng để vai trò dẫn xuất có hiệu lực. Ví dụ: bạn có thể tạo vai trò dẫn xuất từ thành viên và người kiểm duyệt, sau đó thêm điều kiện rằng vai trò dẫn xuất chỉ có thể có hiệu lực nếu thành viên hoặc người kiểm duyệt đang hoạt động. Điều này có thể được thực hiện thông qua phím điều kiện. Để biết thêm thông tin về các điều kiện, hãy xem hướng dẫn về điều kiện tại đây
tài nguyên_post. yaml Mô tả tệp
Tệp chính sách tài nguyên cho phép bạn tạo quy tắc cho vai trò gốc/vai trò dẫn xuất đối với các hành động khác nhau có thể được thực hiện trên tài nguyên. Các quy tắc này thông báo cho các vai trò nếu họ có quyền thực hiện một số hành động nhất định trên tài nguyên
Dán đoạn mã sau vào
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
33 của bạnnpm init -y
6Tệp chính sách tài nguyên chứa các quyền mà mỗi vai trò hoặc vai trò dẫn xuất có thể có quyền truy cập
- apiVersion là phiên bản dành cho tệp chính sách tài nguyên
- resourcePolicy giữ tất cả các thuộc tính chính của chính sách tài nguyên
- phiên bản được sử dụng để xác định chính sách sẽ được sử dụng trong ứng dụng;
- importDerivedRoles được sử dụng để chỉ định loại vai trò dẫn xuất mà bạn muốn nhập vào tệp chính sách tài nguyên
- tài nguyên chứa tài nguyên bạn muốn áp dụng các vai trò và quyền cho
- quy tắc là nơi bạn sẽ đặt quy tắc cho các hoạt động khác nhau, trên cơ sở quyền của người dùng
- hành động là các hoạt động được thực hiện
- tác dụng là cho biết có cấp quyền truy cập cho người dùng vào hoạt động hay không, dựa trên vai trò và vai trò dẫn xuất [và điều kiện, nếu chúng tồn tại]
- dẫn xuấtRoles chứa các vai trò dẫn xuất mà bạn đã tạo trong dẫn xuất_roles của mình. tập tin yaml
- vai trò là vai trò mặc định tĩnh được sử dụng bởi ứng dụng của bạn
- điều kiện chỉ định các điều kiện phải được đáp ứng trước khi có thể cấp quyền truy cập cho hoạt động
Để đảm bảo các tệp YAML của chính sách của bạn không chứa lỗi, hãy chạy lệnh này trong thư mục gốc của bài đăng trên blog. Nếu nó không trả về bất cứ thứ gì, thì nó không có lỗi
npm init -y
7Khởi động máy chủ Cerbos
Bây giờ bạn đã tạo thành công các tệp chính sách mà Cerbos sẽ sử dụng để ủy quyền cho người dùng trong ứng dụng của bạn. Tiếp theo, đã đến lúc khởi động máy chủ Cerbos bằng cách chạy lệnh bên dưới trong thiết bị đầu cuối của bạn
npm init -y
8Máy chủ Cerbos của bạn sẽ chạy tại http. //máy chủ cục bộ. 3592. Truy cập liên kết và nếu không có lỗi nào được trả về thì máy chủ đang hoạt động tốt
Triển khai Cerbos vào ứng dụng
Bây giờ là lúc để lấp đầy giàn giáo trống trong tệp
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
8npm init -y
9{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
37 là bộ điều khiển kiểm tra xem người dùng có quyền truy cập vào một số hành động nhất định hay không. Nó chứa các phím sau- Các hành động chứa tất cả các hành động có sẵn mà bạn đã tạo trong tệp chính sách tài nguyên
- Tài nguyên cho phép bạn chỉ ra chính sách tài nguyên nào bạn muốn sử dụng cho yêu cầu tài nguyên từ nhiều tệp chính sách tài nguyên
- Chính sáchVersion trong khóa tài nguyên ánh xạ tới phiên bản trong tệp chính sách tài nguyên
- loại ánh xạ tới khóa tài nguyên trong tệp chính sách tài nguyên. Các phiên bản có thể chứa nhiều yêu cầu tài nguyên mà bạn muốn kiểm tra đối với tệp chính sách tài nguyên. Trong bản demo, bạn chỉ đang kiểm tra tài nguyên bài đăng trên blog
- Hiệu trưởng chứa thông tin chi tiết về người dùng thực hiện yêu cầu tài nguyên tại trường hợp đó
Phương thức
{
"name": "blogpost",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "mocha --exit --recursive test/**/*.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@cerbos/grpc": "^0.6.0",
"express": "^4.17.1"
},
"devDependencies": {
"chai": "^4.3.4",
"chai-http": "^4.3.0",
"mocha": "^9.0.3",
"nodemon": "^2.0.12"
}
}
38 được sử dụng để kiểm tra xem người dùng/hiệu trưởng có được phép thực hiện hành động được yêu cầu tại trường hợp đó khôngKiểm tra Ủy quyền Cerbos với Ứng dụng Bài đăng trên Blog
Bạn đã thiết lập thành công các vai trò và quyền cần thiết cho từng thao tác trong ứng dụng demo bài đăng trên blog CRUD. Bây giờ là lúc để kiểm tra lại các tuyến đường và quan sát điều gì sẽ xảy ra, sử dụng bảng bên dưới làm hướng dẫn để kiểm tra
actionuser_iduser_roleuser_statusresponsetạo, xem. tất cả các điểm. thành viên duy nhất1 và 2hoạt độngOKTất cả hành động3thành viên bị chặnKhông được ủy quyềnTất cả hành động5người điều hành bị chặnKhông được ủy quyềnCập nhật bài đăng của chính mình1thành viênhoạt độngOKCập nhật bài đăng của người dùng khác1thành viênhoạt độngKhông được ủy quyềnBảng trên hiển thị một tập hợp con các quyền khác nhau cho mỗi người dùng được triển khai trong ứng dụng demo
Bạn có thể sao chép kho lưu trữ ứng dụng demo từ GitHub. Khi bạn đã sao chép nó, hãy làm theo các hướng dẫn đơn giản trong tệp README. Bạn có thể chạy tập lệnh kiểm tra tự động để kiểm tra các quyền và vai trò người dùng khác nhau
Phần kết luận
Trong bài viết này, bạn đã biết được những lợi ích của việc ủy quyền Cerbos bằng cách triển khai nó trong một Node demo. ứng dụng js. Bạn cũng đã tìm hiểu các tệp chính sách khác nhau của Cerbos và tầm quan trọng của chúng trong việc đảm bảo ủy quyền hoạt động bình thường