|
首先,存進(jìn)數(shù)據(jù)庫的格式,看下:
復(fù)制代碼 代碼如下:
news:3,gallery:1,users:15
也許你經(jīng)??吹酱孢M(jìn)數(shù)據(jù)庫是3,1,15就這樣的格式,而沒有前面的news,gallery,users,為了看上去方便以及程序編寫時(shí)容易查看,就加上了。news代表新聞模塊,gallery代表圖庫模塊,而users代表用戶管理模塊,而3,1,15:
復(fù)制代碼 代碼如下:
1 = 1 = 20
3 = 1 + 2 = 20 + 21
15 = 1 + 2 + 4 + 8 = 20 + 21 + 22 + 23
而這些值都可以用位或取得:
復(fù)制代碼 代碼如下:
1 = Convert.ToInt32(1)
3 = Convert.ToInt32(1|2)
15= Convert.ToInt32(1|2|4|8)
而1,2,4,8剛好對應(yīng)權(quán)限枚舉:
復(fù)制代碼 代碼如下:
/// <summary>
/// 1添加,2修改,4刪除,8管理列表
/// </summary>
public enum Perm
{
add = 1,
update = 2,
delete = 4,
readlist = 8
}
如果已經(jīng)一個權(quán)限值為7,那么我們怎么知道這個用戶有哪些權(quán)限呢?我們分析:
復(fù)制代碼 代碼如下:
7 = 1 + 2 + 4 = 20 + 21 + 22 = 2 3 - 1
其實(shí)這是一條數(shù)學(xué)公式,很高興我在數(shù)學(xué)系學(xué)的東西在程序方面有所作用了:
復(fù)制代碼 代碼如下:
Sigma ( 2n , n 是自然數(shù) ) = 2n+1 - 1 ,即 1 + 2 + 4 + 8 + .... + 64 = 128 - 1 = 127
毫無疑問的,這個是比較復(fù)雜的。
未完,待續(xù)...
AspNet技術(shù):asp.net 權(quán)限管理分析,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。