2011-09-30 4 views
0

을 사용하십시오.웹 응용 프로그램에서 사용자 및 그룹 보안을 구현하는 방법은 무엇입니까? PHP가 중요하다면

사용자 및 그룹이있는 웹 사이트를 만드는 경우. 웹 응용 프로그램에이 파일을 어디에 넣으시겠습니까? 그냥 모든 페이지의 상단 (의사)에 기능을 넣어 마십시오 : 사람이 그룹에있는 경우 누군가가이 그룹에있는 경우

는 그들이이 버튼

를 볼 수있는이 페이지 또는 를 볼 수 있습니다 확실히 틀린 것 같습니다. 나는 그룹 코드를 볼 수있는 사람을 변경하기 위해 웹 응용 프로그램 코드를 편집하고 싶지 않습니다. 나는 내가 무엇을해야하는지 또는 이와 비슷한 것을 어떻게 구현할 지 확신하지 못한다.

감사합니다.

답변

1

MySQL에서는 항상 외래 키를 사용하여 연결된 4 개의 테이블 user, user_groups, permissions 및 user_groups_permissions를 만듭니다.

따라서 사용자 A는 사용자 그룹 B에 속할 수 있으며이 사용자 그룹 권한은 user_groups_permissions에 있습니다.

이제이 4 개의 테이블 (또는 더 나은 세 가지 : 사용자, user_groups_permissions 및 사용 권한)에서 INNER JOIN을 수행하면 결과는 사용자에게 부여됩니다. INNER JOIN이 permissions.key을 선택하면됩니다.

요청을 처리하기 전에 Client :: has_permissin ('send_post')이 true를 반환하는지 확인해야합니다. 또한 각 사용자 그룹 관련 기능 위에 더 좋습니다.

참고 : 클라이언트는 요청을 처리하기 전에 한 번만 모든 사용자 권한을로드 한 다음 해당 요청에서 데이터베이스에 여러 번 액세스 할 필요없이 전체 요청 - 수명 시간 동안 해당 사용 권한을 사용하는 클래스입니다. 이 클래스에 정적 메서드와 $ permissions 속성을 사용하면 응용 프로그램 클래스/메서드/함수를 통해 객체를 보낼 필요가 없습니다.

+0

사실 내 응용 프로그램 아키텍처를 좀 더 복잡하게 설계하고 모든 페이지를 동적 슬러그로 만듭니다 (thats Wordpress는 그것을 부르지 만 Wordpress는 사용하지 않습니다.) 그렇다면 전체 애플리케이션에서 Client :: has_page_access()를 호출하여 페이지 액세스 권한을 확인하기 만하면 권한 확인이 필요하지 않습니다. 각 페이지마다. 하지만 Client :: has_permission ($ key)은 여전히 ​​제한된 함수에서 호출됩니다. 또한 페이지에 직접 액세스 할 수 없으며 모든 URL이 index.php로 리디렉션되고 거기에서 처리됩니다. – user5483434

0

사용자 ID 및 그룹 코드를 사용하고 true 또는 false를 반환하는 유틸리티 함수를 사용할 수 있습니다. 해당 유틸리티 기능을 각 페이지 상단의 의사 (pseudo)로 사용할 수 있으며 동일한 기능을 사용하여 페이지의 섹션을 숨기거나 표시 할 수도 있습니다.

웹 응용 프로그램이 MVC에있는 경우 사용자 권한 부여 논리를 컨트롤러에 포함하십시오.

관련 문제