Biểu diễn và lượng giá luật với cây biểu thức

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu về điều khiển truy cập sử dụng mô hình RBAC mở rộng (Trang 38 - 40)

Chương 2 MỞ RỘNG ĐIỀU KHIỂN TRUY CẬP RBAC VỚI LUẬT

2.4 Khiển khai RBAC mở rộng với luật

2.4.4 Biểu diễn và lượng giá luật với cây biểu thức

Có nhiều cách khác nhau để biểu diễn và lượng giá luật, trong luận văn này chúng tôi sử dụng cây biểu thứcđể biểu diễn và lượng giá luật.

.Net Framework cho phép ta biểu diễn và lượng giá một Expression tree khá dễ dàng. Vì thế, ta chỉ cần phân tích file cấu hình để chuyển thành cây biểu thức tương ứng. Việc xây dựng cây biểu thức được thực hiện theo thuật toán đệ quy như sau:

ExpressionBuildExpressionFromConditions(XElementconditionElement) {

Expression result, left, right;

XElement[]parameters:= parameter elements of conditionElement

switch (operator) {

case"equal":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.Equal(left, right);

break;

case"notequal":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.NotEqual(left, right);

break;

case"greaterorequal":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.GreaterThanOrEqual(left, right);

break;

case"lessorequal":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.LessThanOrEqual(left, right);

break;

case"greaterthan":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.GreaterThan(left, right);

break;

case"lessthan":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.LessThan(left, right);

break;

case"and":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.And(left, right);

break;

case"or":

break; case"not": left = BuildExpressionFromParameter(parameters[0]); result = Expression.Not(left); break; case"add": left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.Add(left, right);

break;

case"subtract":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.Subtract(left, right);

break;

case"multiply":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.Multiply(left, right);

break;

case"divide":

left = BuildExpressionFromParameter(parameters[0]); right = BuildExpressionFromParameter(parameters[1]); result = Expression.Divide(left, right);

break; } return result; } ExpressionBuildExpressionFromParameter(XElementparameterElement) {

if(parameterElement has condition elements)

{

conditionElement=get condition element of parameterElement

returnBuildExpressionFromConditions(conditionElement); }

elseif (parameterElement has claim type elements) {

claimTypeElement=get claim type element of parameterElement

returnBuildExpressionFromClaimItem(claimTypeElement); }

elseif (parameterElement has constant elements) {

constantElement=get constant element of parameterElement

returnBuildExpressionFromConstant(constantElement); }

}

Việc xây dựng cây biểu thức được thực hiện bắt đầu từ việc phân tích thẻ

Conditions của luật (cấu trúc mỗi luật được giới thiệu trong mục 2.2) và đi

sâu xuống các nhánh con (thẻ Parameter). Đến mỗi nhánh con, nó có thể lại

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu về điều khiển truy cập sử dụng mô hình RBAC mở rộng (Trang 38 - 40)

Tải bản đầy đủ (PDF)

(61 trang)