2013-07-10 2 views
0

CakePHP 애플 리케이션에 credentials 외부 사용자 정의 PHP 코드로 만든 세션을 통해 로그인을 시도하고 있습니다. 그러나 나는 정확하게 이것을하는 방법을 이해할 수 없다. 나는 형식으로하고 싶지 않다.cakephp Auth 세션을 통해 로그인

예 : 사이트 A에 로그인했으며 CakePHP 앱은 사이트 B (둘 다 동일한 서버에서 호스팅되지만 다른 폴더에 있음)입니다.

나는

B.

에 사이트 A로부터 username/password 세트를 검색 한하지만 동일한에 사이트 B.

어떤 생각을이를 사용하는 방법을 지금을 몰라?

감사합니다.

참고 : 그럼 난 즉 $this->Session->read('Username');

지금 인증 예를 들어 $this->Auth->login($this->Session->read('Username')); 그래서 다음 $ this-> Auth-> 사용자를 통해 사용자를 얻을 수 있음을 (를 통해 로그인 할 CakePHP의 세션에서 사용자 이름을 수신하고);

저를 도와 줄 수 있습니까? 나는이 방법을 AppController 메서드에서 수행하고 있습니다 : beforeFilter(), _checksession()

+0

코드 예를 보면 한눈에 설명 할 수 있습니다. –

+0

@Arun_C_C 이제 메모 섹션에서 위에 설명하려고했습니다. –

답변

0

사이트 A에서 보낸 사용자 이름과 암호가 이미 있다면 데이터베이스에 대한 자격 증명을 다시 확인할 수 없었습니까? 또는 세션을 저장하는 테이블을 생성하고 사용자 이름에 링크 그냥 PHP $ _SESSION 변수를 통해 그 세션 변수를 전달

사이트 A :

session_start(); 
$this->Session->write('session','ABCDEFGHIJKL12345'); // random generated string 
// store in DB 

한 다음 사이트 B에 도착 :

사이트 B : 당신이 말한대로 이미 세션에서 사용자 이름/암호가있는 경우 인증 후 시도하는

session_start(); 
// if $this->Session->read('session') == '' force login again 
//else 

//compare the session in the db and check for valid session 

//if valid 

//load page. 
0

, 사용자 모델 데이터 배열을 구축 시도 자동으로 확인합니다 :

// Construct model data array like what AuthComponent would usually expect 
$userData = array(
    'User' => array(
     'username' => $this->Session->read('username'), // Use your stored values (change as appropriate) 
     'password' => $this->Session->read('password') 
    ) 
); 

// Attempt to authenticate the user 
if ($this->Auth->login($userData)) { 

    // Login worked 

} else { 

    // Login failed 

} 
0

덕분에 모든, 차라리 그때, 난 단지 사용자 이름을 전송하고 적절한 검증 후 난으로 로그인을 시도 암호를 보내는 솔루션을 가지고 :

$username = $this->Session->read('userName'); 
//validation 
$user = $this->User->find('first',array('conditions'=>array('username'=>"$username"))); 

$this->Session->write('Auth',$user); 

//now I can use: 
$this->Auth->login() 

을 이전을 나는 틀린 색인에 회의를 저장하고 있었다.