2014-02-26 27 views
1

我有幾個包含訪問位掩碼的頁面,這些頁面僅限於給定用戶的訪問。每個用戶都有自己的訪問位掩碼,用於比較頁面位掩碼。用於檢查誰有權訪問的位掩碼

例如,我有以下頁面和用戶位掩碼:

USER 0100 
PAGE 0101 

要檢查用戶訪問一個網頁,我頁面和用戶訪問代碼之間進行按位與運算。如果這種操作的結果等於用戶位掩碼,則授予訪問權限。

USER & PAGE == USER <--- ACCESS OK 
USER & PAGE != USER <--- NO ACCESS 

對於上面的例子:

0100 & 0101 == 0100 <--- ACCESS OK 

我的解決辦法是偉大的工作,直到我已經創建了更廣泛的訪問權限的用戶:

USER 1100 
PAGE 0101 

1100 & 0101 = 0100 <--- NO ACCESS 

在用戶的掩碼附加的比特毀了我的訪問驗證方法。我該如何解決它?

要授予訪問權限,對於USER和PAGE位掩碼之間的AND操作,至少一位必須返回「true」。

+1

'要授予訪問權限,至少有一位必須返回「真」,以便USER和PAGE位掩碼之間的AND操作。「是不是您先前對USER&PAGE == USER <--- ACESS OK錯誤的說法? – mjuarez

+0

這個公式的問題是當用戶擁有更多權限時,它會使公式爲false。在例子0100&0101 = 0100(OK),1100&0101 = 0100(FALSE) – kazy

+0

我找到了這個問題的答案。如果至少有一位必須匹配,我可以檢查公式的結果是大於還是等於1: USER&PAGE> = 1 這樣,如果至少有一位會比賽。 – kazy

回答

0

我找到了這個問題的答案。如果至少有一位需要匹配,我可以檢查公式的結果是否大於或等於1:這樣,如果至少有一位匹配,公式將爲真。