2010-01-23 2 views
4

추가 데이터를 검색, 그래서 UsersController와 CakePHP의 1.2.5 인증 구성 요소를 사용하고 나에게CakePHP의 인증 난 그냥 CakePHP를 배우고

변명. 사용자 모델은 두 개의 테이블이 포함

class User extends AppModel { 
    var $name = 'User'; 
    var $belongsTo = 'Company'; 
} 

로그인()가 호출 될 때, 나는 모델이 올바른 것 같다, 그래서 데이터 (LEFT가 실행중인 가입)가 SQL 로그에 검색되고 있지만 인증은 데이터를 저장 참조 users 테이블에서 다른 모든 것을 삭제합니다. 나중에 추가 쿼리를 수행하지 않고 어떻게 회사 데이터를 검색 할 수 있습니까? 라인 819에 케이크/libs와/컨트롤러/구성 요소/auth.php에서

답변

4

을 할 수 있으며, 귀하의 의견에 $session->read('Company.name'). Session 구성 요소와 도우미를 추가하는 것을 잊지 마십시오.

+3

'Auth.User.Company' 세션 키에 글을 쓰면 더 편리 할 것입니다. 이렇게하면 세션 값에 액세스하기위한 AuthComponent 래퍼 메소드를 사용할 수 있습니다 :'$ this-> Auth-> user ('Company.field');' – deizel

+0

데이터베이스가 복잡한 경우에 좋은 방법입니다! 예를 들어,'User HABTM Company (with => CompaniesUser)'와 같은 것을 가지고 있다면. OP의 경우 시나리오에서,'$ this-> Auth-> authenticate ('Form'=> array ('contains'=> array ('Company',. ..)))'. [Authentication docs] (https://book.cakephp.org/2.0/en/core-libraries/components/authentication.html). ** 편집 : ** 나는 그 대답은 케이크 1.2에 대한 것을 깨닫습니다. 내 제안은 케이크 2.x에 대한 것입니다. (그 이유는 대답이 아니라 대답입니다!) – Fr0zenFyr

2

, 그것이 있어야

$data = $model->find(array_merge($find, $conditions), null, null, 0); 

시도는해야 할 수도 있습니다

$data = $model->find(array_merge($find, $conditions), null, null, 1); 

기본적으로 설정 재귀 1로 변경 다른 곳에서도 그렇게하십시오. 당신이 나처럼 편안 수정 코어 라이브러리하지 않은 경우 또는, 당신은 또한 당신은 당신의 컨트롤러 $this->Session->read('Company.name')을 사용하여 회사 정보에 ​​액세스 할 수 있습니다

function login() { 
    if ($this->Auth->user()) { 
     $Session->write('Company', $this->User->Company->findById($this->Auth->user('id'))); 
     $this->redirect($this->Auth->redirect()); 
    } 

} 

당신의 UsersController.login 행동에 ...