首页 > 编程 > VBScript > 正文

基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版

2020-06-26 18:07:06
字体:
来源:转载
供稿:网友
看到好多同学权限判断都是用字符串 然后或分割或截取 

其实对于 允许/不允许(true/false) 这种的权限, 用逻辑运算再恰当不过了 

声明下: 本文针对入门和为掌握的同学, 如果已经懂了那可以无视了 

 可能意思表达的不是很清楚, 敬请原谅.  

逻辑运算符介绍: 
And: 逻辑与 

0 And 0 = 0  
0 And 1 = 0  
1 And 0 = 0  
1 And 1 = 1  
Or: 逻辑或 

0 Or 0 = 0  
0 Or 1 = 1  
1 Or 0 = 1  
1 Or 1 = 1  
Xor: 异或 

0 Xor 0 = 0  
0 Xor 1 = 1  
1 Xor 0 = 1  
1 Xor 1 = 0  
Not: 逻辑非 

Not 1 = 0  
Not 0 = 1  


表达方式介绍: 

1 表示 ture, 0 表示 false 

举二位为例 

第一位 表示 Read 的权限, 第二位 表示 Write 的权限, 可以表示一下四种权限 

00 Read(false) Write(false)  
01 Read(true) Write(false)  
10 Read(false) Write(true)  
11 Read(true) Write(true)  


运算方式介绍: 

还是继续上面的例子 

Read = 01(1), Write = 10(2) 

00(0) And Read = 0  
01(1) And Read = Read  
10(2) And Read = 0  
11(3) And Read = Read  
00(0) And Write = 0  
01(1) And Write = 0  
10(2) And Write = Write  
11(3) And Write = Write  


下面给出示例代码: 

权限定义类(要有枚举类型该多好啊...) 

Class PermissionType 

    Public Read 
    Public Write 
    Public Delete 

  Private Sub Class_Initialize 
    Read = 1 
    Write = 2 
    Delete = 4 
  End Sub 

End Class 
权限类 

Class PermissionSetComponent 

    Private intValue 

  Public Property Get Read() 
    Read = GetValue(Permission.Read) 
  End Property 

  Public Property Let Read(arg) 
    Call SetValue(Permission.Read, arg) 
  End Property 

  Public Property Get Write() 
    Write = GetValue(Permission.Write) 
  End Property 

  Public Property Let Write(arg) 
    Call SetValue(Permission.Write, arg) 
  End Property 

  Public Property Get Delete() 
    Delete = GetValue(Permission.Delete) 
  End Property 

  Public Property Let Delete(arg) 
    Call SetValue(Permission.Delete, arg) 
  End Property 

  Public Property Get Value() 
    Value = intValue 
  End Property 


  Public Property Let Value(arg) 
    intValue = arg 
  End Property 

  Public Function GetValue(intType) 
    GetValue = (Value and intType) = intType 

  End Function 

  Public Sub SetValue(intType, boolValue) 
    IF (boolValue) Then 
        Value = Value Or intType 
    Else 
        Value =  Value And (Not intType) 
    End IF 
  End Sub 

End Class 
运用示例代码: 

Dim Permission : Set Permission = new PermissionType 

Dim PermissionSet : Set PermissionSet = new PermissionSetComponent 
PermissionSet.Value = 0 
w("Read:") 
PermissionSet.Read = false 
w(PermissionSet.Value &" "& PermissionSet.Read) 

PermissionSet.Read = true 
w(PermissionSet.Value &" "& PermissionSet.Read) 

w("Write:") 
PermissionSet.Write = false 
w(PermissionSet.Value &" "& PermissionSet.Write) 

PermissionSet.Write = true 
w(PermissionSet.Value &" "& PermissionSet.Write) 

w("Delete:") 
PermissionSet.Delete = false 
w(PermissionSet.Value &" "& PermissionSet.Delete) 

PermissionSet.Delete = true 
w(PermissionSet.Value &" "& PermissionSet.Delete) 

Function w(o) 
    Response.Write("<br />"& o) 
End Function 


今天的课程就到这里, 大家可以举一反三, 下课... 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表