2010-01-04 3 views
1

에베이스 캠프 같은 로그인 만들기 : 내가 2 레벨 인증을 만드는 방법을 잘 모릅니다 http://abc.com/companyname/나는 사용자가 URL을 사용하여 회사의 프로젝트를보기 위해 로그인 할 수 있습니다 로그인 같은베이스 캠프를 만들기 위해 노력하고 CakePHP의

.. (회사 수준에서 하나, 사용자 수준에서 하나) 저는 cakePHP에 익숙하지 않습니다. 내 요구 사항에 대해 작성된 Auth 구성 요소를 수정하는 방법을 알지 못합니다. 아무 도움도 감사하지 않을 것입니다 ...

답변

1

로그인에 Auth 구성 요소를 사용합니다. 내가 ACL을 뒤죽박죽하지는 않을 것이고, 나는 꽤 혼란 스럽다.

사용자 테이블에서 user_level, access_level 또는 permissions 열을 추가하여이 방법을 사용합니다. 그런 다음 여기서 숫자 값이나 그와 비슷한 것을 저장할 수 있습니다.

사용자 모델에서 Auth를 사용하여 로그인 할 때 Auth 사용자 세션 개체에 해당 값을 저장할 수 있습니다. 그래서 컨트롤러에서 $ this-> Auth ('User.access_level')를 사용하여 접근 할 수 있습니다.

이제 Auth 구성 요소는 기본적으로 app_controller에서 isAuthorized() 함수를 사용합니다. 이 함수는 누군가가 로그인했는지 여부를 확인하기 위해 호출됩니다.이 값을 수정하여 access_level을 확인하고 적절한 조치를 취할 수 있습니다. 이 기술을 사용하여 admin = 1이 아닌 사용자가/cms 라우팅에 참여할 수 없도록했습니다.

여기에 대한 자세한 내용은 docs http://book.cakephp.org/view/172/Authentication에 있으며 isAuthorized()에 대한 자세한 내용은 여기를 참조하십시오. http://api.cakephp.org/class/auth-component#method-AuthComponentisAuthorized

app_controller에서 모든 Auth 구성 요소 변수를 설정했는지 확인하십시오. 또한 auth 유형이 controller로 설정되고 allow() 및 deny()가 올바르게 구성되었는지 확인하십시오.

이 모든 것을 하나의 큰 문제는 컨트롤러에서 beforeFilter()를 사용하는 경우 app_controller의 내용이 미리 실행되도록 parent :: beforeFilter()를 수행해야합니다. :)

1

솔직히 나는 ACL 구성 요소를 확인해야한다고 생각합니다. 당신이 그것을 지키면 책 자습서는 아주 좋습니다. 주된주의 사항은 행 수준 액세스 제어 (예 : 사용자 X가이 특정 항목을 편집 할 수 있음)를위한 메커니즘을 제공하지 않는다는 것입니다. 그러나 사용자/그룹 레벨 액세스 제어를 수행하기위한 기초를 제공하며, 사용자는 자신을 확장하여 필요한 행 레벨 액세스를 작성할 수 있습니다. 즉, ACL 구성 요소는 계단식 사용 권한을 지원합니다 (예 : 하위 그룹은 세분화 된 액세스 제어 권한을 가질 수 있지만 상위 그룹에서 권한을 상속 받음). 견고 함과 세분성이 모두 필요한 경우 인생을 훨씬 쉽게 할 수 있습니다.

커뮤니티에서 작성한 추가 인증 구성 요소가 필요에 따라 제공되므로 베이커리를 체크 아웃 할 수도 있습니다. Auth/ACL 항목은 잘하기가 어렵고 항상 웹 앱의 주요 관심사로 강력히 권장됩니다.