2009-09-11 6 views
1

인증 및 권한 부여를 CakePHP 애플리케이션에 통합하기 위해 노력하고 있습니다. 몇 가지 어려움이 있습니다.CakePHP 인증 및 사용자 모델

처음으로 ACL을 사용하지 않았습니다. 그것은 나를 무섭게합니다.

$this->Auth->user(); 

그리고 I :

var $components = array("Auth"); 

그래서, 나는이 로그인 한 사용자 확인 할 언제든지, 내 컨트롤러 중 하나에서이 전화

: 내 AppController가에서

나는이 있습니다 내 usrs 테이블의 정보 인 배열을 가져옵니다 (내 테이블은 모델 Usrusrs).

문제는 내가 자주 Usr 모델에 함수를 호출 할거야, 그래서 내 컨트롤러에서이 작업을 수행해야한다 :

$usr = ClassRegistry::init('Usr'); 
$usrInfo = $this->Auth->user(); 
$usr->set($usrInfo); 
// -- or -- 
$usr = ClassRegistry::init('Usr'); 
$usrId = $this->Auth->user('id'); 
$usr->id = $usrId; 

이 매우 cakey하지 않는 것 그리고 그것은 나를 귀찮게 됐어요 나는 더 나은 방법이 있어야한다는 것을 알고 있기 때문에. 모든 시간에 ClassRegistry를 사용할 필요가 없도록 var $uses = array("Usr")을 AppController에 추가해야합니까? 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+0

당신이 알고 당신이 모델을 Usr 및 설정 $ useTable을 모델 사용자 및 설정 $ useTable = 'usrs'를 호출하거나 호출 할 수 =을 ' usr '또는'users '또는'e '문자가 마음에 들지 않습니까? :) – deizel

+0

th advic dizl에게 감사드립니다. 나는 일하고있는 kyboard issus를 가지고있다. ;) 어쨌든, 나는 "사용자"가 오라클 (현재는 처음 사용하고 있음)의 예약어 인 블로그를 읽었습니다. 오라클 커넥터는 내가 본 적이있는 최고의 코드 조각이 아니며, 그래서 나는 그 문제를 완전히 피하는 것이 더 낫다고 생각했다. – nickf

답변

0

난 그냥 한 줄에 한 가지 방법을 발견했습니다이 가장 좋은 방법은 생각하는 경우

$this->loadModel('Usr', $this->Auth->user('id')) 

내가 아직 모르는 ...

+0

'Controller :: loadModel'은 컨트롤러의 모든 액션이 아닌 컨트롤러 액션만을위한 모델을 필요로 할 때 컨트롤러의 모범 사례입니다. Outwith 컨트롤러를 사용하려면'ClassRegistry :: init'과'App :: import'를 사용해야하며, 이들을 사용할 때는 여전히 MVC를 따르고 있는지 스스로에게 물어야합니다. 이 게시물은 이러한 접근법에 대한 Gwoo의 입장을 요약 한 것입니다 : http://techno-geeks.org/2009/05/models-inside-controller/ – deizel

1

을 왜 그냥하지 않습니다 use 모델?

// in Controller 
var $uses = array('someModel', 'User'); 

이 평소와 같이 사용할 수있는 모델을 만드는 :

$this->User->someFunction($this->Auth->user('id')); // for example 
+0

AppController에 넣으면 어떻게 될까요? 기본값을 덮어 쓰지 않을까요? (예 : PostsController는 기본적으로'$ uses = array ("Post");') – nickf

+1

예입니다. http://book.cakephp.org/view/829/The-App-Controller – deceze

+1

$ uses는 모든 액션에 대한 Usr 모델을로드 할 것이고 loadModel 접근 방식은 필요할 때만로드 할 것입니다. 따라서 실제로는 메모리에있는 더 많은 객체와 컨트롤러 액션에서 더 많은 코드 사이를 이동합니다. – deizel