2013-07-10 3 views
0

Я пытаюсь войти в приложение CakePHP через сеанс с credentials, созданный с внешнего пользовательского кода PHP. Но я не могу понять, как это сделать. Я не хочу делать это с помощью формы.cakephp Auth Войти через сеанс

Например: Я зарегистрирован на сайте А и мое приложение CakePHP - это сайт B (оба размещены на одном сервере, но в разных папках).

Я извлек username/password набор из сайта A в B.

Но я не знаю, что теперь, как использовать это в месте B.

Любая мысль на то же самое?

Спасибо.

Примечание: Ну я получаю имя пользователя в CakePHP сессии т.е. $this->Session->read('Username');

Теперь необходимо войти в систему через Auth например $this->Auth->login($this->Session->read('Username')); Так что я могу получить то пользователь через $ this-> Auth-> пользователь ();

Помогите мне в этом? Я делаю это в AppController, метод: beforeFilter(), _checksession()

+0

Пример кода объяснит с первого взгляда, можете ли вы добавить несколько. –

+0

@Arun_C_C Теперь я попытался объяснить выше в разделе Note. –

ответ

0

Если у вас уже есть имя пользователя и пароль, отправленные с сайта A, разве вы не могли бы просто снова подтвердить учетные данные для базы данных? Или создать таблицу, которая хранит сессии и связать их с именами пользователей и просто передать этот переменный сеанс через переменного PHP $ _SESSION

SITE A:

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

, а затем, когда вы получаете на сайт B:

SITE 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

Если у вас уже есть имя пользователя/пароль в сессии, как вы говорите, попробуйте собрать массив данных модели пользователя, который Auth будет пытаться для автоматической проверки для вас:

// 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() 

Ранее Я спасал сессию по неверному индексу.

Смежные вопросы