2010-08-13 3 views
0

코드베이스와 데이터베이스간에 사용 권한을 관리하는 방법은 무엇입니까? 예를 들어, 내 응용 프로그램이 널려되고 : 코드와 데이터베이스에서 사용 권한에 대한 참조를 관리하는 방법은 무엇입니까?

if($objects['username']['access_type'] == 'edit'){ 
    // print the HTML to edit the username 
} 

또는 OO에서

:

if($user->getPermission('username')->canEdit()){ 
    // print the HTML to edit the username 
} 

어떻게 객체 'username' 및 권한 'edit'가 사용되는 경우 추적 않으며, 당신은 어떻게 유지합니까 이러한 하드 코딩 된 사용 권한 '태그'와 데이터베이스의 사용 권한 테이블에있는 관련 항목 간의 링크? 확실하게 때때로, 이들 중 일부는 길을 잃거나 이름이 바뀌거나 잘못 사용되어야합니다. 이견있는 사람?

답변

0

권한 테이블을 만드시겠습니까?

permisionId - 사용자 아이디 - 모듈 - 권한 다음 permissionId는 autonr입니다

는, 사용자 ID는 사용자 인은, 모듈 권한은 권한 유형이며, '사용자 이름'예입니다.

당신은 int로서 권한 필드를 사용하고 (chmod를이하는 것처럼) 그 위에 'AND'비트 연산자를 사용할 수 있습니다 1 = 읽기 2 = 쓰기, 1 + 2 = 3 = 읽기 + 쓰기

이렇게하면 모듈에 부여 할 권한마다 행을 만들 필요가 없습니다.

+0

안녕하세요. 네, 이미'user','user-role','role','role-permission'과'permission' 테이블이 있습니다. 나는 코드에서'username' 모듈 태그를 작성하고 DB의 표현을 가지고 있는지 궁금합니다. 사람들이 어떻게 된 것일까 요? 예를 들어 코드에서 모듈의 이름을 바꾸면 DB에서 이름을 바꾸어야합니다. – Bendos

+0

이 작업에 대해 수행 할 수있는 작업은 없습니다 ... 모듈을 쉽게 찾고 기억할 수있는 방식으로 이름을 지정해야합니다 그들. 또는 auto_increment 필드의 값으로 작업 할 수도 있지만 좋은 생각은 아닙니다. 한가지 할 수있는 일은 PHP로 배열을 만들고 mysql의 자동 증가 필드 (예 : $ mod [ 'username'] = 1;)와 연결하는 것입니다. 그러나 나는 또한 이것이 좋은 생각이라고 생각하지 않습니다 ... – VeeWee

+0

HTML/JavaScript 코드가 실제로 파일 대신에 데이터베이스의'module' 테이블에 있다면? 웹 사이트 콘텐츠와 같은 비트는 CMS의 테이블에 있습니다. 그런 다음 모든 사용자에 대해 내 user-role-permission-module 테이블에 가입하여 DB에서 필요한 코드를 반환하고 검색을 사용하여 비트 단위로 페이지를 작성하여 값을 채울 수 있습니다. – Bendos

관련 문제