Trong hầu hết các ứng dụng, cần có quyền kiểm soát truy cập, tùy thuộc vào vai trò của người dùng. Trong bài học này, chúng ta sẽ xem xét một ví dụ về việc thiết lập một điều khiển như vậy cho một ứng dụng web. Là một phần của nhiệm vụ này, bạn sẽ cần phải:
- Xác định vai trò người dùng
- Tùy thuộc vào vai trò, kiểm soát việc hiển thị các mục menu điều hướng
- Không thể điều hướng đến các trang không thể truy cập vào một vai trò cụ thể
Chuẩn bị ban đầu
Hãy bắt đầu với phần chuẩn bị. Để thuận tiện cho việc cấu hình thêm, việc tạo một biến toàn cục sẽ lưu trữ thông tin về người dùng hiện tại là cần thiết. Do đó, nếu bạn cần kiểm tra, bạn sẽ không cần phải liên hệ với phụ trợ mỗi lần và yêu cầu thông tin về người dùng. Chỉ cần đọc dữ liệu cần thiết từ biến toàn cục là đủ.
Cần phải tính đến các tùy chọn khác nhau mà người dùng được ủy quyền có thể truy cập vào ứng dụng:
- Đăng nhập là kết quả của việc ủy quyền thành công trên trang Login .
- Đăng nhập như là kết quả của đăng ký.
- Đăng nhập trực tiếp qua một liên kết đến một trang cụ thể cho người dùng đã được ủy quyền.
Trong mỗi trường hợp này, một truy vấn phụ trợ được sử dụng để trả về thông tin về người dùng. Trong quy trình nghiệp vụ tương ứng, bạn chỉ cần thêm khối Set Variable để ghi lại biến toàn cục User_gv mà bạn đã tạo trước đó.
Khối này được thêm vào quy trình kinh doanh CheckAuth dành cho người dùng được ủy quyền, nằm trong thư mục Prebuilt trong phần quy trình kinh doanh.
Để nhập thông qua các trang đăng nhập hoặc đăng ký, khối được thêm vào quy trình kinh doanh của các nút tương ứng.
Hãy kiểm tra kết quả trên trang bắt đầu của ứng dụng. Để làm điều này, hãy thêm một Label sẽ chào người dùng theo tên và tùy thuộc vào vai trò, sẽ ghi người đó có phải là quản trị viên hay không.
Bạn cần thiết lập một quy trình công việc sẽ kích hoạt khi bất kỳ Label nào được hiển thị ( Trình kích hoạt Label onShow ).
- Expand User . Để biết thông tin về tên và vai trò của người dùng.
- In Array . Để kiểm tra xem người dùng đã cho có thuộc nhóm Admins hay không.
- If-Else . Đối với sự thay đổi của các hành động tùy thuộc vào kết quả kiểm tra.
- Set Variable (String) . Để tạo biến String có giá trị " NOT " nếu người dùng không phải là thành viên của nhóm Admins hoặc giá trị trống nếu có.
- Concat Strings (Multiple) . Để tạo một cụm từ hoàn chỉnh như “ Hi, Ken. You are NOT Admin ”.
- Label Update Properties . Đối với hiển thị cuối cùng của cụm từ này trên trang.
Nếu mọi thứ được thực hiện chính xác, thì với bất kỳ biến thể nào khi vào trang, màn hình sẽ có kết quả tương tự.
Kiểm soát hiển thị các mục menu
Bây giờ là lúc để chuyển sang phần chính. Hãy tạo một trang chỉ dành cho Quản trị viên và thêm mục menu tương ứng ( Admin Page quản trị ) để truy cập trang đó. Giải pháp tốt nhất là tắt khả năng hiển thị của nó theo mặc định.
Sử dụng khối Navigate , bạn phải chọn trang đã tạo trong tham số Page và tìm ID của trang này.
Trong ví dụ này, chỉ có một trang có quyền truy cập bị hạn chế, nhưng tốt hơn hết bạn nên thấy trước ngay tùy chọn khi có thể có nhiều trang như vậy và tạo một biến chỉ đọc toàn cầu để lưu trữ danh sách các trang.
Tiếp theo, bạn cần tự tạo quy trình công việc (hãy gọi nó là Set NavItem Visibility ) để kiểm soát mức độ hiển thị của các mục menu điều hướng.
- Expand User . Để biết thông tin về vai trò của người dùng.
- In Array . Để kiểm tra xem người dùng đã cho có thuộc nhóm Admins hay không.
- For each loop . Để chạy vòng lặp cho tất cả các trang được chỉ định trong biến toàn cục.
- NavItem Update Properties . Để kiểm soát khả năng hiển thị của một phần tử, tùy thuộc vào việc người dùng có phải là quản trị viên hay không.
Khối của quy trình kinh doanh đã tạo phải được thêm vào trước khi chuyển đến trang chủ trong quy trình kinh doanh của các nút đăng nhập và đăng ký người dùng (trước đây, các khối Set Variable đã được thêm vào chúng để ghi một biến có thông tin về người dùng hiện tại).
Kiểm soát truy cập thông qua liên kết trực tiếp
Điều cuối cùng cần làm là thiết lập một quy trình công việc được thực thi mỗi khi ứng dụng được khởi chạy bằng trình kích hoạt “ On app launch ”. Như trong bước trước, hãy thêm khối Set NavItems Visibility cho người dùng đã xác thực.
Ngoài ra, cần cung cấp khả năng bảo vệ chống truy cập vào một trang đã đóng thông qua liên kết trực tiếp:
- In Array (Admin_pages) . Để kiểm tra xem trang mục tiêu có nằm trong danh sách các trang chỉ dành cho quản trị viên hay không.
- If-Else . Đối với sự thay đổi của các hành động tùy thuộc vào kết quả kiểm tra. Nếu False , bạn có thể điều hướng đến trang được chỉ định. Trong trường hợp là True , cần phải kiểm tra thêm quyền truy cập trang này.
- Expand User . Để đọc thông tin người dùng từ biến toàn cục User_gv .
- In Array . Để kiểm tra tư cách thành viên trong nhóm Admins .
- If-Else . Để chọn các hành động tùy thuộc vào sự hiện diện của quyền quản trị viên hoặc sự vắng mặt của họ.
- Navigate . Để đi đến trang được yêu cầu hoặc chuyển hướng đến trang bắt đầu trong trường hợp người dùng không có quyền thích hợp cố mở một trang chỉ dành cho quản trị viên.
Các trang đã chọn hiện được bảo vệ khỏi truy cập trái phép. Trong trường hợp không có quyền, chúng không được hiển thị trong menu và không thể truy cập được ngay cả thông qua liên kết trực tiếp.
Điều quan trọng cần nhớ là bảo vệ quyền truy cập cho một số trang nhất định không có nghĩa là bảo vệ tự động cho các điểm cuối có thể được sử dụng trên các trang đó. Để thực hiện việc này, nếu cần, trong cài đặt Middleware Token Auth thực mã thông báo phần mềm trung gian, bạn cần chỉ định nhóm người dùng có quyền truy cập vào điểm cuối đã chọn.