문제

나는 내가 개발하기 시작하고 나의 일반적인 접근 방식이 개선 될 수 있는지 궁금해하고자하는 웹 앱에 대해 생각하고있다.

마지막 몇 앱에서 나는 역할 (예 : 아래 참조)을 만들었습니다. CREATE POST, EDIT POST 등) 각각 비트 필드가 그들에게 적용되어 있으므로 등록에 특정 권한을 할당하고 나중에 확인할 수 있습니다 (예 : $user->hasRight(CREATE_POST)).

이것에 대한 더 나은 접근 방식이 있는지 궁금합니다. 권리가 사용자와 구체적으로 연결되어 있지 않을 때 확실히 혼란 스럽습니다 (각 권리가 부울 열이지만 작은 개선처럼 들리는 테이블이있을 수 있습니다) - 그리고 일부를 바꾸면 어떻게됩니까?

나는 표준 라이브러리를 사용하고 싶지 않습니다 (앱 자체는 나에게 학습 경험입니다 : PostgreSQL, Git 등)는 그들로부터 영감을 받아 나 자신을 구성하는 것을 완벽하게 기쁘게 생각합니다. 제발 말해봐야합니다. :)

도움이 되었습니까?

해결책

그것은 기본적으로 내 자신의 웹 앱에서 취하는 것과 동일한 접근법입니다 (그리고 약간의 시행 착오가 나에게 들어 왔습니다). 유일한 차이점은 아마도 열과 다른 권한을 가진 테이블을 사용하므로 나중에 더 많은 권한을 추가하려면 나중에 할 수 있습니다. 정수에 비트를 사용하면 정수에있는 것처럼 고정 된 수의 권한, 즉 정수에 많은 비트가 제한됩니다. 일반적으로 그것은 내가 아마도 충분하다고 생각하는 32 일 것입니다. 그러나 나는 그런 식으로 자신을 제한하지 않는 것을 선호합니다.

가치가있는 것은 PHPBB가 사용하는 모델 (테이블 열로 권한)이며 가장 인기있는 PHP 웹 앱에 충분하다면 아마도 당신에게 충분할 것입니다 ;-)

다른 팁

널리 사용되는 Java ACL 프레임 워크 인 Spring Security (이전 ACEGI)의 문서를 살펴볼 수 있습니다.

이 문서는 철저하며 봇 인증 및 승인 설계에서 이루어진 다양한 고려 사항을 설명합니다. Java를 사용하지 않더라도 읽을 가치가 있습니다.

당신은 볼 수 있습니다 색인 페이지 Acegi가하는 일에 대한 개요와 인상을 얻는 것. 당신은 또한 오른쪽으로 건너 뛸 수 있습니다 승인 개념 또는 심지어 데이터베이스 스키마.

PHPGACL을 이미 찾았을 것이라고 확신하지만 여기에는 그렇지 않은 경우 링크가 있습니다. 처음에는 머리를 감싸는 것이 조금 거칠 수 있으며, 도서관은 프로젝트에 구현하기가 까다 롭지 만 문서와 데모는 훌륭한 참조 포인트입니다.

PHP 일반 액세스 제어 목록

그만큼 Zend 프레임 워크 있습니다 ACL 이것은 당신이하려는 것과 비슷합니다.

예를 들어 웹 애플리케이션의 ACL 접근 방식은 예를 들어 논의되었습니다. 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top