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.
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ó.