Cấp bậc tác giả:

TRAINING

Giải thích về Role-based và View-based Authorization trong ASP.NET MVC Core

Được viết bởi webmaster ngày 13/11/2023 lúc 04:47 PM
Role-based và View-based Authorization là hai phương pháp được sử dụng trong ASP.NET MVC Core để kiểm soát quyền truy cập vào các tài nguyên và điều chỉnh giao diện người dùng dựa trên danh tính người dùng hiện tại.
  • 0
  • 1237

Giải thích về Role-based và View-based Authorization trong ASP.NET MVC Core

Role-based và View-based Authorization là hai phương pháp được sử dụng trong ASP.NET MVC Core để kiểm soát quyền truy cập vào các tài nguyên và điều chỉnh giao diện người dùng dựa trên danh tính người dùng hiện tại.

Role-based Authorization:
  • Role-based Authorization là phương pháp kiểm soát quyền truy cập dựa trên vai trò của người dùng.
  • Mỗi người dùng có thể thuộc một hoặc nhiều vai trò.
  • Ví dụ: một người dùng có thể thuộc vai trò "Quản trị viên" và "Người dùng".
  • Trong ASP.NET MVC Core, việc kiểm soát quyền truy cập dựa trên vai trò được thực hiện bằng cách sử dụng thuộc tính [Authorize(Roles = "RoleName")] trên các Controller hoặc Action.
  • Ví dụ: [Authorize(Roles = "Administrator")] chỉ cho phép người dùng thuộc vai trò "Quản trị viên" truy cập vào Controller hoặc Action tương ứng.
View-based Authorization:
  • View-based Authorization là phương pháp điều chỉnh giao diện người dùng dựa trên quyền truy cập của người dùng.
  • Khi sử dụng View-based Authorization, có thể hiển thị, ẩn hoặc sửa đổi các phần của giao diện người dùng dựa trên quyền truy cập của người dùng hiện tại.
  • Trong ASP.NET MVC Core, có thể truy cập vào dịch vụ xác thực trong các Razor view bằng cách sử dụng @inject directive.
  • Ví dụ: @inject IAuthorizationService AuthorizationService để tiêm dịch vụ xác thực vào Razor view.
  • Sau đó, bạn có thể sử dụng dịch vụ xác thực để kiểm tra quyền truy cập bằng cách gọi phương thức AuthorizeAsync và điều chỉnh giao diện người dùng dựa trên kết quả trả về.
Dưới đây là ví dụ cụ thể về việc sử dụng @inject IAuthorizationService trong ASP.NET MVC Core:

Đầu tiên, chúng ta cần thêm namespace Microsoft.AspNetCore.Authorization vào Razor view:
@using Microsoft.AspNetCore.Authorization
Tiếp theo, sử dụng @inject directive để inject IAuthorizationService vào Razor view:
@inject IAuthorizationService AuthorizationService
Bây giờ, sử dụng AuthorizationService để kiểm tra quyền truy cập trong Razor view. Ví dụ, để kiểm tra xem người dùng hiện tại có quyền truy cập vào một chính sách cụ thể hay không, chúng ta có thể sử dụng AuthorizeAsync như sau:
@if ((await AuthorizationService.AuthorizeAsync(User, "PolicyName")).Succeeded)
{
    <p>This paragraph is displayed because you fulfilled PolicyName.</p>
}
Trong một số trường hợp, kiểm tra quyền truy cập dựa trên view model. Để làm điều này, sử dụng AuthorizeAsync với view model như resource:
@if ((await AuthorizationService.AuthorizeAsync(User, Model, Operations.Edit)).Succeeded)
{
    <p><a class="btn btn-default" role="button"
        href="@Url.Action("Edit", "Document", new { id = Model.Id })">Edit</a></p>
}
Trong ví dụ trên, chúng ta truyền view model làm resource để chính sách đánh giá có thể xem xét.

Lưu ý: Việc ẩn hiện các phần tử giao diện người dùng không đảm bảo hoàn toàn việc kiểm tra quyền truy cập. Ví dụ, người dùng có thể truy cập vào action method bằng cách biết URL tương ứng của resource. Vì vậy, action method nên thực hiện kiểm tra quyền truy cập riêng của nó.

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML