2014-03-30 4 views
0

내 웹 사이트에 2 개의 인증 영역이 있습니다. - 도메인/관리자 (관리 지역) - 도메인/클라이언트 (클라이언트 영역)2 CakePHP의 인증 세션

관리자의 모델이 다르며 클라이언트의 모델이 다릅니다.

저는 $ this-> Auth()를 사용하고 있습니다. 다음 코드를 사용하여 사용자가 권한이 있는지 확인합니다.

public function isAuthorized($user) { 
    // Client ACL 
    if ($this->params['controller'] == 'clients'): 
     if (isset($user) && !empty($user['business_type'])) { 
      return true; 
     } else { 
      return false; 
     } 
    endif; 
} 

잘 작동합니다. 문제는 관리자 영역에 로그인하여 클라이언트 영역 URL로 이동하면 로그인 한 상태로 표시된다는 것입니다. 관리 영역과 클라이언트 영역에 대해 서로 다른 두 개의 세션을 갖고 싶습니다.

사용자가 실제로 관리 영역 또는 클라이언트 영역에 로그인했는지 어떻게 식별합니까? 그리고 관리자와 클라이언트가 같은 브라우저에서 동시에 로그인 할 수있는 메커니즘을 개발하려고합니다.

또한 관리 지역 isAthorized 코드가 당신은 AuthComponent : $ sessionKey http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#AuthComponent : $ sessionKey

를 사용할 필요가

답변

2

AppController.php

에 저장되어있는 이유는 관리 영역에 대한 관리 접두어를 사용하고 있습니다

admin 접두사를 사용하고 있으므로 AppController.php에서 admin 영역에 $ sessionKey를 설정할 수 있습니다.

예 :

AuthComponent::$sessionKey = 'Auth.Admin'; 

그리고 고객의 컨트롤러는 고객을위한 또 다른 세션 키를 생성 할 수있는

.

AuthComponent::$sessionKey = 'Auth.Client'; 

이렇게하면 문제가 해결됩니다.

+0

cakephp3에서는 작동하지 않습니다. 새로운 구문에 대해 알고 싶습니까? –