Java web 後臺選單許可權驗證方法
首先有個選單表,和許可權表,使用者表,
使用者表id 關聯許可權id 許可權表中要有個 許可權欄位
下面開始說許可權欄位中的資料存什麼:
這裡我們運用BitInteger這個類
1.在建立角色許可權時首先運用 BitInteger中setBit( int);方法將所有選單id依次set進建立的BItInteger中
並儲存到我們的許可權表中,
2.在查詢/判斷許可權時用選單id依次和許可權欄位用BitInteger中的testBit(int)進行對比 返回true則有權訪問,false則無權訪問;
注:選單id一定要是數字
以上時大概流程,和思路。
public static void main(String[] args) { String [] strArray = {"20","2","300","4","5","6","12"}; BigInteger bit = new BigInteger("0"); for(int i = 0;i<strArray.length;i++){ System.out.println(bit); bit = bit.setBit(Integer.parseInt(strArray[i])); } System.out.println(bit); boolean ok = bit.testBit(5); System.out.println(ok); }
輸出:
0 1048576 1048580 2037035976334486086268445688409378161051468393665936250636140449354381299763336706184445956 2037035976334486086268445688409378161051468393665936250636140449354381299763336706184445972 2037035976334486086268445688409378161051468393665936250636140449354381299763336706184446004 2037035976334486086268445688409378161051468393665936250636140449354381299763336706184446068 2037035976334486086268445688409378161051468393665936250636140449354381299763336706184450164 true
以上時測試類方法,下面說下選單許可權的詳細思路,
登陸成功後,進入讀取選單,1
1.將表中所有選單讀出放到listAllMenu中,然後建立一個新List用於存放有許可權的選單
2查詢出當前使用者的許可權中的許可權欄位 role,
3遍歷listAllMenu 讀取選單id然後和許可權role用BitInteger中testBit()方法進行對比將返回true的物件放入新建的list中
(注:由於選單涉及到父級選單/子選單,所以最好將對比打包成一個遞迴方法)
最後將新建立的list返回前臺;
各位程式設計之路重在理解和動手所以就不粘詳細程式碼了
這只不過是本人最基本的理解肯定有漏洞和不足指出,
在此發表的是實際工作中所遇到的功能思路,和一些異常,有些可能不堪一提,但卻是是絆住我的問題都會記錄在這裡,也就當個筆記吧.