Quản lý người dùng trong phát triển phần mềm là một yếu tố cần thiết trong an ninh mạng. Trong làn sóng tội phạm mạng ngày càng gia tăng, làm thế nào để bạn đảm bảo Ủy quyền và Xác thực được thực hiện một cách chính xác? Ủy quyền và Xác thực không đúng là lý do tại sao phần mềm của bạn dễ bị tấn công.
Nếu bạn quan tâm đến các quy định về an toàn và tuân thủ dữ liệu của người dùng , thì việc bảo mật và quản lý quyền truy cập của người dùng phải là mối quan tâm hàng đầu của bạn. Điều này không khác gì đối với một ứng dụng được xây dựng bằng Strapi. Ý thức bảo mật là một chủ đề thiết yếu trong các ngành công nghiệp phần mềm. Vì những lý do này, Strapi cho phép bạn quản lý Xác thực người dùng cuối bằng Plugin Người dùng và Quyền và khởi chạy Kiểm soát truy cập dựa trên vai trò (RBAC) cho người dùng quản trị trong bảng điều khiển quản trị.
Mục lục
Bạn cần những điều sau để hiểu quản lý người dùng trong Strapi.
Mục tiêu của bài viết này là giải thích cách quản lý người dùng hoạt động và cách triển khai quản lý người dùng. Đối tượng mục tiêu sẽ hiểu cách quản lý người dùng trong Strapi theo các quy định về tuân thủ dữ liệu.
Bài viết này sẽ tìm hiểu ngắn gọn về quản lý người dùng trong Strapi, cách quản lý người dùng cho người dùng cuối và người dùng quản trị hoạt động trong Strapi, Xác thực cục bộ và việc sử dụng của Nhà cung cấp đối với Xác thực người dùng cuối bằng Strapi.
Mặc dù Xác thực và Ủy quyền đều là các quy trình bảo mật trong Quản lý Danh tính và Truy cập (IAM) , chúng khác nhau. Trong khi Xác thực cố gắng xác định người dùng để đảm bảo họ là ai, Ủy quyền cho phép người dùng truy cập các tài nguyên / tài liệu cụ thể dựa trên Vai trò của họ (họ là ai).
Hãy nghĩ về Xác thực giống như khi bạn cố gắng đăng nhập vào tài khoản Facebook của mình. Nếu bạn không cung cấp thông tin đăng nhập chính xác (email và mật khẩu), bạn sẽ không được phép truy cập vào tài khoản của mình mặc dù đó là tài khoản của bạn. Bạn sẽ chỉ được phép truy cập vào tài khoản của mình (đã được xác thực) khi bạn cung cấp thông tin đăng nhập chính xác. Hệ thống muốn chắc chắn rằng bạn là chính mình.
Đối với Ủy quyền, hãy nghĩ đến việc sở hữu một trang Facebook. Khi bạn truy cập trang Facebook, bạn là quản trị viên kể từ khi bạn sở hữu trang đó. Do đó, bạn có thể đăng nội dung trên trang của mình, sửa đổi nội dung và thậm chí phê duyệt nội dung từ các thành viên trên trang của bạn không phải là quản trị viên. Khi các thành viên trong nhóm của bạn không phải là quản trị viên cố gắng phê duyệt nội dung của người khác, họ sẽ phát hiện ra rằng họ không thể. Điều này là do họ không có quyền làm điều đó; chỉ quản trị viên mới có thể.
Người dùng cuối trong Strapi giống như người dùng đăng nhập vào tài khoản Facebook của họ. Chúng được quản lý bằng Plugin Người dùng và Quyền và không phải là quản trị viên. Đồng thời, người dùng quản trị giống như chủ sở hữu của một trang Facebook. Họ là quản trị viên và được quản lý trong bảng quản trị.
Mặc dù Plugin Người dùng và Quyền cung cấp tính năng quản lý người dùng giống như bảng điều khiển quản trị, nhưng điều cần thiết là phải biết rằng hai plugin này cung cấp tính năng quản lý người dùng cho các kiểu người dùng khác nhau. Bảng quản trị cho phép bạn triển khai Kiểm soát truy cập dựa trên vai trò cho người dùng có quyền truy cập vào bảng quản trị. Ngược lại, Plugin Người dùng và Quyền sẽ cho phép bạn quản lý Người dùng cuối và thực thi Xác thực.
Để hiểu rõ hơn điều này, hãy xem ví dụ về một công ty viết blog nhỏ. Công ty này có rất nhiều tác giả, biên tập viên và giám đốc về sự thành công của khách hàng. Để tổ chức các quy trình trong công ty này, các tác giả chỉ cần truy cập các bài đăng của họ, trong khi các biên tập viên phải có quyền truy cập vào tất cả các bài đăng mà họ sẽ chỉnh sửa. Giám đốc thành công của khách hàng phải có thể truy cập và quản lý tất cả các tính năng liên quan đến bài đăng. Do đó, các tác giả có thể được chỉ định cho vai trò tác giả, biên tập viên cho vai trò biên tập và giám đốc thành công của khách hàng cho vai trò quản trị viên cấp cao trong bảng quản trị.
Các vai trò trong bảng quản trị theo mặc định là Tác giả , Biên tập viên và Quản trị viên cấp cao . Theo mặc định, người dùng tạo ứng dụng Strapi được chỉ định vai trò Quản trị viên cấp cao. Bạn có thể chỉnh sửa bất kỳ Vai trò nào bằng cách nhấp vào nút chỉnh sửa bên cạnh mỗi Vai trò.
Tuy nhiên, việc quản lý người dùng trong Plugin Người dùng và Quyền là khác nhau. Ví dụ: bạn muốn người đọc các bài báo trong blog của bạn bỏ nhận xét sau khi đọc các bài viết của tác giả. Để làm điều này, họ sẽ cần đăng ký một tài khoản. Tại đây, bạn có thể cần đặt Plugin Người dùng và Quyền để cho phép người dùng, dù đã đăng ký hay chưa, có thể xem các bài viết trong blog của bạn. Tuy nhiên, bạn có thể không muốn người dùng chưa đăng ký (chưa được xác thực) bình luận trừ khi họ đăng ký.
Các vai trò trong Plugin Người dùng và Quyền theo mặc định là các vai trò Công khai và Xác thực . Theo mặc định, người dùng đã đăng ký được chỉ định cho Vai trò được xác thực .
Khi blog của bạn tiếp tục phát triển, bạn sẽ cần thuê thêm tác giả và biên tập viên. Hãy đăng ký một người dùng mới (tác giả) cho blog của chúng tôi trong bảng quản trị.
Các vai trò trong bảng quản trị theo mặc định là Tác giả , Biên tập viên và Quản trị viên cấp cao . Theo mặc định, người dùng tạo ứng dụng Strapi được chỉ định vai trò Quản trị viên cấp cao. Bạn có thể chỉnh sửa bất kỳ Vai trò nào bằng cách nhấp vào nút chỉnh sửa bên cạnh mỗi Vai trò.
Tuy nhiên, việc quản lý người dùng trong Plugin Người dùng và Quyền là khác nhau. Ví dụ: bạn muốn người đọc các bài báo trong blog của bạn bỏ nhận xét sau khi đọc các bài viết của tác giả. Để làm điều này, họ sẽ cần đăng ký một tài khoản. Tại đây, bạn có thể cần đặt Plugin Người dùng và Quyền để cho phép người dùng, dù đã đăng ký hay chưa, có thể xem các bài viết trong blog của bạn. Tuy nhiên, bạn có thể không muốn người dùng chưa đăng ký (chưa được xác thực) bình luận trừ khi họ đăng ký.
Các vai trò trong Plugin Người dùng và Quyền theo mặc định là các vai trò Công khai và Xác thực . Theo mặc định, người dùng đã đăng ký được chỉ định cho Vai trò được xác thực .
Khi blog của bạn tiếp tục phát triển, bạn sẽ cần thuê thêm tác giả và biên tập viên. Hãy đăng ký một người dùng mới (tác giả) cho blog của chúng tôi trong bảng quản trị.
Phần này sẽ tạo một blog mẫu với hai tác giả, hai biên tập viên và một quản trị viên cấp cao. Mục tiêu của blog mẫu này là để hiểu cách quản lý người dùng trong bảng quản trị được thực hiện.
Khi bạn điều hướng đến tab nơi quản trị viên cấp cao hoặc người chỉnh sửa đã đăng nhập và điều hướng đến p lugins / media library , tức là http: // localhost: 1337 / admin / plugins / upload , bạn sẽ thấy tệp bạn vừa tải lên. Tuy nhiên, chỉ tác giả đã tải tệp lên mới có thể xem được; tác giả khác không thể đánh giá nó.
Cũng giống như một blog thông thường, các biên tập viên có thể thay thế phương tiện được đăng bởi một tác giả. Khi bạn tùy chỉnh các vai trò trong bảng điều khiển quản trị, bạn có thể cấp quyền cho người chỉnh sửa để chỉ truy cập các bài đăng của tác giả được chỉ định cho họ.
Ngoài ra, bạn có thể tạo các loại bộ sưu tập mới cho các bài viết của mình và chỉ định vai trò cho những người dùng có thể chỉ định chúng.
Phần này sẽ tạo một blog mẫu với hai tác giả, hai biên tập viên và một quản trị viên cấp cao. Mục tiêu của blog mẫu này là để hiểu cách quản lý người dùng trong bảng quản trị được thực hiện.
Khi bạn điều hướng đến tab nơi quản trị viên cấp cao hoặc người chỉnh sửa đã đăng nhập và điều hướng đến p lugins / media library , tức là http: // localhost: 1337 / admin / plugins / upload , bạn sẽ thấy tệp bạn vừa tải lên. Tuy nhiên, chỉ tác giả đã tải tệp lên mới có thể xem được; tác giả khác không thể đánh giá nó.
Cũng giống như một blog thông thường, các biên tập viên có thể thay thế phương tiện được đăng bởi một tác giả. Khi bạn tùy chỉnh các vai trò trong bảng điều khiển quản trị, bạn có thể cấp quyền cho người chỉnh sửa để chỉ truy cập các bài đăng của tác giả được chỉ định cho họ.
Ngoài ra, bạn có thể tạo các loại bộ sưu tập mới cho các bài viết của mình và chỉ định vai trò cho những người dùng có thể chỉ định chúng.
Bạn có thể cập nhật quyền của từng Vai trò cũng như thêm các vai trò mới. Chúng tôi chỉ có ba Vai trò theo mặc định. Tuy nhiên, chúng tôi có thể quyết định thêm nhiều Vai trò hơn vào bảng điều khiển quản trị.
Ví dụ, trong ứng dụng blog mẫu của chúng tôi, chúng tôi có thể yêu cầu một tổng biên tập. Anh ấy không bị giới hạn chỉ truy cập các bài đăng mà anh ấy được chỉ định chỉnh sửa, nhưng anh ấy có thể truy cập tất cả các Bài đăng trên diễn đàn. Để thêm một vai trò mới cho tổng biên tập của chúng tôi:
Để cập nhật một vai trò đã có, hãy nhấp vào nút chỉnh sửa bên cạnh Vai trò. Vui lòng tìm kiếm chức năng bạn muốn cập nhật và nhấp vào hộp để chọn.
Trong phần này, chúng ta sẽ khám phá các trạng thái khác nhau của người dùng cuối. Từ Vai trò công khai đến Vai trò được xác thực và cách quản lý quyền cho người dùng cuối.
Vai trò công khai là vai trò mặc định được liên kết với mọi yêu cầu không có tiêu đề ủy quyền. Nếu bạn cho phép một số quyền trong Vai trò này, mọi người sẽ có thể truy cập các tuyến đường hoặc điểm cuối mà bạn đã chọn.
Mọi người dùng mới đăng nhập (được xác thực) đều được cấp Vai trò này theo mặc định nếu bạn không cung cấp vai trò cho họ khi tạo. Trong Vai trò này, bạn có thể xác định các tuyến đường mà người dùng đã xác thực có thể truy cập.
Để quản lý hoặc sửa đổi quyền của vai trò người dùng, hãy nhấp vào tên vai trò trong trang tổng quan. Điều này sẽ cho phép bạn xem tất cả các chức năng liên quan đến một tuyến đường cụ thể có sẵn trong ứng dụng của bạn. Chọn hoặc bỏ chọn tên chức năng để cho phép Vai trò hiện tại mà bạn đang chỉnh sửa.
Hầu hết các lần, người dùng mới không được giao vai trò. Để cập nhật vai trò mặc định và gán một vai trò mới cho người dùng, hãy điều hướng đến tab Cài đặt nâng cao và cập nhật tùy chọn Vai trò mặc định cho người dùng được xác thực . Vui lòng tìm kiếm người dùng và cập nhật Vai trò của họ.
Đối với người dùng cuối Strapi, xác thực có thể được thực hiện cục bộ hoặc sử dụng nhà cung cấp. Trong phần này, chúng ta sẽ tìm hiểu xác thực cục bộ trong Strapi là gì. Xác thực cục bộ liên quan đến xác thực cục bộ trên Strapi bằng thông tin đăng nhập của bạn. Ở đây, chúng ta sẽ thảo luận về cách đăng ký và xác thực có thể được thực hiện cục bộ trên Strapi.
Đăng ký trong bảng quản trị của Strapi khá đơn giản. Khi plugin này được cài đặt, bạn có thể đăng ký người dùng với Axios bằng cách đăng dữ liệu của họ vào cơ sở dữ liệu của bạn, như trong ví dụ bên dưới.
//import axios
import axios from 'axios';
// Add your own code here to customize or restrict how the public can register new users.
// make post request with user's credential
axios
.post('http://localhost:1337/auth/local/register', {
username: 'username',
email: 'email',
password: 'password',
})
.then(response => {
// If user was registered successfully .....
console.log('Well done!');
console.log('User profile', response.data.user);
console.log('User token', response.data.jwt);
})
.catch(error => {
// If there was an error .......
console.log('An error occurred:', error.response);
});
Giá trị nhận dạng trong lệnh gọi API có thể là email hoặc tên người dùng của người dùng.
Khi bạn muốn giới hạn người dùng có thể truy cập một số tuyến đường hoặc tài liệu dựa trên Vai trò của họ, bạn có thể sử dụng mã thông báo JWT và đặt mã thông báo web JSON trong tiêu đề ủy quyền của yêu cầu API của bạn cho các yêu cầu cấp quyền hạn chế.
Nếu bạn không đặt tiêu đề ủy quyền trong các yêu cầu API của mình, thì yêu cầu đó sẽ đảm nhận quyền vai trò công khai theo mặc định. Dưới đây là ví dụ về yêu cầu API với tiêu đề ủy quyền.
//import axios
import axios from 'axios';
// place your token here or you can use a .env file.
const token = 'YOUR_TOKEN_HERE';
// make post request.
axios
.get('http://localhost:1337/posts', {
// place authorization header here
headers: {
Authorization: `Bearer ${token}`,
},
})
.then(response => {
// If user was registered successfully .....
console.log('Data: ', response.data);
})
.catch(error => {
// If there was an error .......
console.log('An error occurred:', error.response);
});
Ví dụ trên đặt tiêu đề ủy quyền trong yêu cầu API để truy xuất các bài đăng. Hãy nhớ rằng khi người dùng được xác thực thành công, mã thông báo người dùng sẽ được gửi như được thấy trong ví dụ đăng nhập console.log của chúng tôi (‘Mã thông báo người dùng’, response.data.jwt); .
Nếu mã thông báo của người dùng không tương ứng với mã thông báo được yêu cầu trong quá trình ủy quyền, lỗi sẽ xảy ra và mã lỗi 401 (trái phép) sẽ được hiển thị.
Để tránh gửi thư rác, bạn có thể muốn gửi email đến những người dùng đã đăng ký để xác thực đăng ký của họ. Để thực hiện việc này, hãy đặt Bật xác nhận email thành BẬT trong trang tổng quan quản trị. Đảm bảo rằng thuộc tính cấu hình URL được đặt để người dùng có thể nhận được liên kết xác nhận. Đôi khi, cần phải gửi lại thư xác nhận cho người dùng. Để làm điều này, hãy thực hiện một yêu cầu như ví dụ bên dưới.
// import axios
import axios from 'axios';
// Send validation email
axios
.post(`http://localhost:1337/auth/send-email-confirmation`, {
email: 'user@strapi.io', // user's email
})
.then(response => {
// If user was registered successfully .....
console.log('Your user received an email');
})
.catch(error => {
// If there was an error .......
console.error('An error occurred:', error.response);
});
Đối với người dùng cuối Strapi, xác thực có thể được thực hiện cục bộ hoặc sử dụng nhà cung cấp. Trong phần này, chúng ta sẽ tìm hiểu xác thực cục bộ trong Strapi là gì. Xác thực cục bộ liên quan đến xác thực cục bộ trên Strapi bằng thông tin đăng nhập của bạn. Ở đây, chúng ta sẽ thảo luận về cách đăng ký và xác thực có thể được thực hiện cục bộ trên Strapi.
Đăng ký trong bảng quản trị của Strapi khá đơn giản. Khi plugin này được cài đặt, bạn có thể đăng ký người dùng với Axios bằng cách đăng dữ liệu của họ vào cơ sở dữ liệu của bạn, như trong ví dụ bên dưới.
//import axios
import axios from 'axios';
// Add your own code here to customize or restrict how the public can register new users.
// make post request with user's credential
axios
.post('http://localhost:1337/auth/local/register', {
username: 'username',
email: 'email',
password: 'password',
})
.then(response => {
// If user was registered successfully .....
console.log('Well done!');
console.log('User profile', response.data.user);
console.log('User token', response.data.jwt);
})
.catch(error => {
// If there was an error .......
console.log('An error occurred:', error.response);
});
Giá trị nhận dạng trong lệnh gọi API có thể là email hoặc tên người dùng của người dùng.
Khi bạn muốn giới hạn người dùng có thể truy cập một số tuyến đường hoặc tài liệu dựa trên Vai trò của họ, bạn có thể sử dụng mã thông báo JWT và đặt mã thông báo web JSON trong tiêu đề ủy quyền của yêu cầu API của bạn cho các yêu cầu cấp quyền hạn chế.
Nếu bạn không đặt tiêu đề ủy quyền trong các yêu cầu API của mình, thì yêu cầu đó sẽ đảm nhận quyền vai trò công khai theo mặc định. Dưới đây là ví dụ về yêu cầu API với tiêu đề ủy quyền.
//import axios
import axios from 'axios';
// place your token here or you can use a .env file.
const token = 'YOUR_TOKEN_HERE';
// make post request.
axios
.get('http://localhost:1337/posts', {
// place authorization header here
headers: {
Authorization: `Bearer ${token}`,
},
})
.then(response => {
// If user was registered successfully .....
console.log('Data: ', response.data);
})
.catch(error => {
// If there was an error .......
console.log('An error occurred:', error.response);
});
Ví dụ trên đặt tiêu đề ủy quyền trong yêu cầu API để truy xuất các bài đăng. Hãy nhớ rằng khi người dùng được xác thực thành công, mã thông báo người dùng sẽ được gửi như được thấy trong ví dụ đăng nhập console.log của chúng tôi (‘Mã thông báo người dùng’, response.data.jwt); .
Nếu mã thông báo của người dùng không tương ứng với mã thông báo được yêu cầu trong quá trình ủy quyền, lỗi sẽ xảy ra và mã lỗi 401 (trái phép) sẽ được hiển thị.
Để tránh gửi thư rác, bạn có thể muốn gửi email đến những người dùng đã đăng ký để xác thực đăng ký của họ. Để thực hiện việc này, hãy đặt Bật xác nhận email thành BẬT trong trang tổng quan quản trị. Đảm bảo rằng thuộc tính cấu hình URL được đặt để người dùng có thể nhận được liên kết xác nhận. Đôi khi, cần phải gửi lại thư xác nhận cho người dùng. Để làm điều này, hãy thực hiện một yêu cầu như ví dụ bên dưới.
// import axios
import axios from 'axios';
// Send validation email
axios
.post(`http://localhost:1337/auth/send-email-confirmation`, {
email: 'user@strapi.io', // user's email
})
.then(response => {
// If user was registered successfully .....
console.log('Your user received an email');
})
.catch(error => {
// If there was an error .......
console.error('An error occurred:', error.response);
});
Đối với hầu hết người dùng, việc tạo hồ sơ mới cho từng phần mềm mà họ sắp sử dụng trở nên căng thẳng hơn. Để giải quyết vấn đề này, Strapi cho phép người dùng đăng nhập với sự trợ giúp của các nhà cung cấp. Ví dụ: bạn có thể đăng nhập vào tài khoản Strapi của mình bằng GitHub. Bạn có thể triển khai tính năng này với ứng dụng của mình được xây dựng bằng Strapi để người dùng của bạn có thể sử dụng các nhà cung cấp như Facebook hoặc Google để đăng nhập vào ứng dụng của họ.
Strapi cho phép người dùng đăng nhập hoặc đăng ký với các nhà cung cấp sau:
Giải thích chi tiết về cách kết hợp từng nhà cung cấp trong ứng dụng của bạn được hiển thị trong tài liệu này .
Nguồn: https://strapi.io/blog/strapi-s-user-roles-and-permissions-for-admin-panel-1
Trong thế giới thương mại điện tử không ngừng phát triển, việc đi trước đón đầu là rất quan trọng. […]
Công ty công nghệ BEIT là một trong những doanh nghiệp tiên phong trong lĩnh vực công nghệ thông tin […]
Đối với người dùng không chuyên, việc tạo hình ảnh bắt mắt từng là một thách thức. Giờ đây, các […]
Cách cải thiện SEO cho trang web của bạn, tăng thứ hạng tìm kiếm và tăng mức độ tương tác […]
Mục lục1 1. Khám phá các tùy chọn Elementor1.1 Cài đặt phần tử1.2 Những Widget nào được bao gồm?2 2. […]
Học cách bán hàng trên nền tảng thân thiện với người mới bắt đầu của Shopify dễ dàng đến mức […]