基於二進位的許可權管理與驗證

來源:互聯網
上載者:User

1、許可權值的設定
  用二進位來表示許可權值應該是按位來設定,每個位佔一個,表示一種許可權,如:

    00000001表示十進位1,
    00000010表示十進位2,
    00000100表示十進位4,
    00001000表示十進位8;

  依次類推,才能清晰正確的標識,多種許可權的賦予則使用“或運算”,此時各位比較混亂,如00000011表示十進位3,此時它意味著擁有兩種許可權。

Long userrolevalue ;//使用者的許可權值,根據他屬於的許可權組,這個值會不同
Long oprolevalue   ;//一個操作的許可權值,根據他屬於的許可權組,這個值會不同

2、許可權的賦予(或運算)
userrolevalue = userrolevalue | oprolevalue
假設一個使用者u1,他的初始許可權值為0(00000000)。如果要指定他有經理的許可權,經理的許可權值為4(00000100),在第三個二進位位為1。
很顯然,userrolevalue =  0 | 4 ,值為4,如果u1要同時具有文員、主管、經理的許可權呢,
userrolevalue = 0 | 1   00000000 | 00000001  = 00000001
userrolevalue = 1 | 2   00000001 | 00000010  = 00000011
userrolevalue = 3 | 4   00000011 | 00000100  = 00000111
這樣,第1、2、3位都是1了,用 “或”的好處就是只改變指定位的值,如果使用者已經有了該許可權,直接簡單的用加法來做會出錯,而用"或"再賦予一次,也不會出錯,如下:
userrolevalue = 7 | 4   00000111 | 00000100  = 00000111

3、許可權的除去(求補、與運算)
userrolevalue = userrolevalue & (~oprolevalue)
假設一個使用者u1,他的初始許可權值為7(00000111),說明他能做文員、主管、經理許可權組所能作的所有操作。如果不想讓他有主管許可權組能作的操作呢,那麼,就要把他的許可權值變為00000101,而主管許可權組的許可權值是00000010,顯然簡單的用減法,肯定也是不行的,但是先對00000010作補運算,可以得到11111101,再同00000111作與運算,就得到了00000101,這樣就只對第二位作了改變,不會影響到其它位,我們的目的也就達到了。

對於一個操作,哪些許可權組能操作它,也可以用與運算來做,不讓某些許可權組有些操作的許可權,也可以先求補,再作與運算來解決。

4、許可權的驗證(與運算)
(userrolevalue & oprolevalue) != 0表示擁有oprolevalue所表示許可權

 例如:現有一個使用者User的許可權為6(00000110),通過&(與)運算,使用公式 "(User的許可權 & 許可權值) != 0" 即可判斷擁有某個許可權值表示的許可權----6 & 2 == 2 (00000110 & 00000010 == 00000010),表示User擁有主管許可權;6 & 4 !=0 (00000110 & 00000100 == 00000100) ,表示User擁有經理許可權;6 & 1 == 0(00000110 & 00000001 == 00000000),表示User無文員許可權;  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.