2010-07-08 2 views
0

좋아, 여기에 내가하려는 일의 요지가있다.Bitwise Permissions을 사용할 때 어떻게 권한을 무효화합니까?

두 테이블이 있습니다. 하나는 "순위"또는 "역할"이고 다른 하나는 사용자입니다. 역할/사용자별로 사용 ​​권한을 할당하고 사용 권한을 철회하고 싶습니다.

그래서, 그냥 일반적인 목적을 위해 우리는 $ role_can $ user_can 및 $ user_cant

내가 지정하는 목적을 위해, 우리는 OR 비트를 사용할 수 있다는 것을 알고있다 말할 수 있습니다. $ permissions = ($ role_can | $ user_can)이 둘을 결합합니다.

이제는 특정 사용 권한을 철회 할 수 있기를 바랍니다. 이것은 보통 비트 XOR을 사용하여 정상적으로 수행되었지만 바보 증명으로 만들고 싶습니다. 다시 말해서, 내가 소유하지 않은 권한을 제외함으로써 실수로 권한에 대한 액세스 권한을 부여하고 싶지 않습니다.

가장 좋은 방법은 무엇입니까?

전통적으로 (($ role_can | $ user_can)^$ user_cant) - 바보 교정에는 사용할 수 없습니다.

저는 여전히 비트 연산에 익숙하지 않으므로 대답이 분명하다면 쉽게 이해해주십시오.

저는 PHP를 사용하고 있지만 작동하고 이해하기 쉬운 한 모든 언어/의사 코드를 사용할 수 있습니다.

감사합니다.

답변

2

bitwise "not" operator을 사용할 수 있습니다.

(($role_can | $user_can) & ~$user_cant) 
+0

AND NOT. 고맙습니다. 나는 모든 종류의 다른 조합을 시도하고 정신적으로 그것을 알아낼 수 없었습니다. 나는 이전에는 NOT가 작동하지 않을 것이라고 생각 했었습니다. 음, 다른 모든 것을 잘못 설정했기 때문입니다.하지만 AND와 함께 작동하는 방법을 볼 수 있습니다. 고맙습니다. – Navarr

관련 문제