CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 539

539

Chương 13: Bảo mật

Sử dụng lớp

System.Security.Permissions.PrincipalPermission

và bản sao đặc

tính

System.Security.Permissions.PrincipalPermissionAttribute

của lớp này để

bảo vệ các phần tử trong chương trình của bạn với các yêu cầu RBS.

.NET Framework hỗ trợ cả yêu cầu RBS bắt buộc (imperative RBS demand) và yêu cầu RBS
khai báo (declarative RBS demand). Lớp

PrincipalPermission

hỗ trợ các lệnh bảo mật bắt

buộc, và bản sao đặc tính

PrincipalPermissionAttribute

của lớp này hỗ trợ các lệnh bảo mật

khai báo. Các yêu cầu RBS sử dụng cú pháp giống như các yêu cầu CAS, nhưng các yêu cầu
RBS chỉ rõ tên mà người dùng hiện hành phải có, hoặc thông thường hơn là các vai trò mà
người dùng này là thành viên. Một yêu cầu RBS lệnh cho bộ thực thi xét tên và các vai trò của
người dùng hiện hành, và nếu chúng không đạt yêu cầu, bộ thực thi sẽ ném ngoại lệ

System.Security.SecurityException

.

Đoạn mã dưới đây trình bày cú pháp của một yêu cầu bảo mật bắt buộc:

// Cú pháp của một yêu cầu bảo mật bắt buộc dựa-trên-vai-trò.

public static void SomeMethod() {

§

PrincipalPermission perm =

new PrincipalPermission("UserName", "RoleName");

perm.Demand();

§

}

Trước tiên, bạn phải tạo một đối tượng

PrincipalPermission

chỉ định tên người dùng và tên

vai trò mà bạn yêu cầu, rồi gọi phương thức

Demand

của nó. Bạn chỉ có thể chỉ định một tên

người dùng và tên vai trò cho mỗi yêu cầu. Nếu tên người dùng hoặc tên vai trò là

null

, bất

kỳ giá trị nào cũng sẽ thỏa mãn yêu cầu. Khác với các quyền truy xuất mã lệnh, một yêu cầu
RBS không cho kết quả trong một stack walk; bộ thực thi chỉ đánh giá tên người dùng và các
vai trò của người dùng hiện hành.
Đoạn mã dưới đây trình bày cú pháp của một yêu cầu bảo mật khai báo:

// Cú pháp của một yêu cầu bảo mật khai báo dựa-trên-vai-trò.

[PrincipalPermission(SecurityAction.Demand, Name = "UserName",

Role = "RoleName")]

public static void SomeMethod() { /*...*/}

Bạn có thể thay các yêu cầu RBS khai báo ở mức lớp hay mức thành viên. Các yêu cầu mức-
lớp áp dụng cho tất cả các thành viên của lớp trừ khi có một yêu cầu mức-thành-viên chép đè
yêu cầu mức-lớp.
Nói chung, bạn có thể tự chọn hiện thực các yêu cầu RBS bắt buộc hay khai báo. Tuy nhiên,
các yêu cầu bảo mật bắt buộc cho phép bạn tích hợp các yêu cầu RBS với logic của mã lệnh để
thực hiện những yêu cầu RBS phức tạp. Ngoài ra, nếu không biết vai trò hay tên người dùng
để yêu cầu lúc biên dịch, bạn phải sử dụng các yêu cầu bắt buộc. Các yêu cầu RBS khai báo có
thuận lợi là chúng độc lập với logic của mã lệnh và dễ nhận biết hơn. Ngoài ra, bạn có thể

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.