2009-11-10 2 views
6

내 이벤트 색인 페이지에 대한 권한을 설정하려고합니다. 특정 사용자가 이벤트를 추가 할 때 설정 한 것을 볼 수 있습니다. 사용자가 내 이벤트를 클릭하면 이벤트 컨트롤러는 먼저 사용자 ID를 확인하고 사용자가 자신의 캘린더에서 어떤 이벤트를 볼 수 있는지 제어 할 수있는 이벤트 데이터베이스를 확인합니다. 사용자가 이벤트를 작성하고 다른 사용자에게 공유 할 때 권한이 추가됩니다. 게다가, 정확한 1 인 이벤트 데이터베이스와 비교할 현재 사용자 ID를 어떻게 찾을 수 있습니까?로그인 한 후 다른 페이지 컨트롤러에서 내 현재 사용자 ID를 찾는 방법은 무엇입니까?

이 기능을 수행하기위한 제안은 무엇입니까? 나는 코드와 개념을 알아야 현재 사용자 ID를 모든 이벤트 데이터베이스와 비교하고 현재 사용자가 특정 이벤트를 볼 수 있습니다.

감사합니다.

답변

18

사용자 데이터를 기록하기 위해 권장되는 방법은 AuthComponent 자체를 통해입니다.

6

세션을 사용하여 페이지간에 사용자의 데이터를 저장하고 읽습니다. 컨트롤러 내에서

:

// store a user id in the session 
$this->Session->write('User.id', $userId); 

// read a user id from the session 
$userId = $this->Session->read('User.id'); 

조회수 내 : 당신은 "User.id"를 통해 무언가를 선호하는 경우 원하는 키를 사용할 수 있습니다

// read a user id from the session 
$userId = $session->read('User.id'); 

. 단순히 이것을 사용하는 경우 AuthComponent이 기본값이기 때문에이 코드를 사용합니다.

+1

하나를 사용 케이크 페이지에서 페이지로 전달되는 다른 세션, 쿼리, 데이터, 모든 것을 볼 수 있지만, 할 수있는 세션 구성 요소는 도우미가 세션에 쓸 수있는 능력이 없다는 것입니다. " http://book.cakephp.org/view/484/Session – deizel

+1

그 차이점을 지적 해 주셔서 고맙습니다. 반영하기 위해 응답을 업데이트했습니다. –

2

원하는 것은 ACL (액세스 제어 목록)입니다. 살펴 봐야 할 케이크에는 AclComponent이 내장되어 있습니다. 그것은 사용자 ID를 보유 할 AuthComponent과 함께 작동합니다. 처음에는 조금 복잡했지만 번거 로움이있었습니다.

+0

AclComponent는 일부 * authorization * 모듈의 내부에서만 사용됩니다. AuthComponent는 인증 된 * 사용자뿐만 아니라 다른 최상위 인증 관련 항목을 찾을 곳입니다. – spinkus

1

또한 간단한 접근 방법으로 의 modelcontroller 설정을 살펴보십시오. 이렇게하면 액세스를 결정하는 논리를 저장하는 컨트롤러 또는 모델 (선택 항목)에 isAuthorized() 메서드를 정의 할 수 있습니다 (액세스가 허용되는 경우 true을 반환하고 거부 된 경우 false을 반환해야 함).

// in any controller 
$userId = $this->Auth->user('id'); 

CakePHP Book의 인증 섹션에서 Accessing the logged in user를 참조하십시오

관련 문제