在
Segment
表中,有三個字段,
segmentId
、
segmentName
、
segmentRight
,
分別表示權限序號(從
1
開始),模塊名,訪問權值。其中
segmentRight=2
的
segmentId-1
次方,
即
??
??? ?segmentId=1
,
segmentRight=1
(對應二進制
1
)
???? segmentId=2
,
segmentRight=2
(對應二進制
10
)
???? segmentId=3
,
segmentRight=4
(對應二進制
100
)
???? segmentId=4
,
segmentRight=8
????
segmentId=5
,
segmentRight=16
?
???? ......
????
相當于
segmentRight
的第
0
位代表
segmentId=1
的模塊訪問權限,
??????????? segmentRight
的第
1
位代表
segmentId=2
的模塊訪問權限,
??????????? segmentRight
的第
2
位代表
segmentId=3
的模塊訪問權限,
??
?????????segmentRight
的第
3
位代表
segmentId=4
的模塊訪問權限,
??????????? ......
????
而在部門表里的
Segment=
上面
segmentRight
之和,比如,
Segment=7
,其二進制為
0111
,
則表示該部門對
segmentId
是
1
,
2
,
3
的模塊具有訪問權。換句話說,測試部門表里的
Segment
字段的各個二進制位,即可知該部門是否具有對某模塊的訪問權。
?
???
對
Segment
表進行單獨管理,增、刪、改操作。
?
???
對部門表的管理,增加權限的設置,即顯示已有的可操作模塊,操作者進行選擇,然后
將選中的各模塊的
segmentRight
值加起來,賦予部門表里的
Segment
字段。
?
???
訪問模塊的權限判斷流程如下:
?
???
用戶點擊某模塊
-->
從
Segment
表中通過
segmentName
(模塊名)取出該模塊的
segmentRight
值,
????????????????????
同時從部門表中取出該部門的
segment
值
????????????????? -->
將
segment
值和
segmentRight
值進行“位與”操作,即
segment & segmentRight,
????????????????? -->
如果“位與”的結果等于
segmentRight
,則該部門具有操作該模塊的權限,
????????????????????
使用戶進入該模塊的操作。
????????????????? -->
如果“位與”的結果等于
0
,則拒絕該用戶進入該模塊的操作。
相關代碼以及討論者請按如下方式聯系:
MSN:yun15291li@hotmail.com
Email:ygyunguang@yahoo.com.cn