2013-05-05 6 views
0

У меня есть приложение, разработанное с помощью CakePHP, где я использую AuthComponent для аутентификации и авторизации.CakePHP - Вход для пользователя

Я делаю акцию, когда пользователь может зарегистрироваться в приложении с помощью Facebook.

Я использовал HybridAuth для интеграции Facebook с моим приложением, и я получаю информацию о данных пользователя для управления.

Теперь я получаю данные правильно, но когда я пытаюсь принудительно ввести логин и перенаправить пользователя на авторизованную страницу, пользователь получает ошибку аутентификации.

Мой код:

$this->Auth->login($user_exists['User']); 
$this->redirect($this->Auth->redirect()); 

Где $ user_exists [ 'User'] равно: $ user_exists = $ this-> User-> findByUsername ($ Profile-> электронная почта);

Может ли кто-нибудь сказать мне, что я делаю неправильно, и почему CakePHP не примет мои данные, чтобы сделать принудительный вход?

Спасибо!

+0

Какую версию CakePHP вы используете? Кроме того, вы пробовали это так: '$ This-> Auth-> Логин ($ user_exists)'? Я не знаком с плагином 'HybridAuth', поэтому не могу ответить, если это правильный подход в сочетании с этим плагином. – thaJeztah

+0

Что именно содержит массив' $ user_exists ['User'] '? Добавьте 'debug ($ user_exists ['User']);' перед тем, как найти метод входа. –

+0

Отладка $ user_exists: http://bin.cakephp.org/saved/102118 Я использую CakePHP v2.3.4. Я попробовал только $ user_exists, on -> login(). HybridAuth - это просто, чтобы получить информацию о пользователе из API Facebook, не имеет ничего общего с AuthComponent. –

ответ

0

Где $ user_exists [ 'User'] равно: user_exists

Это ваша проблема прямо там $. Те, кто не могут быть равны, так как последний содержит глубокий массив с

'User' => array(...) 

и первый непосредственно массив (...)

поэтому убедитесь, что вы передаете в массиве (квартира) пользователя непосредственно ,

->login($data) 

с

$data = array('id' => 1, 'username' => 'foo, ...) 
+0

Я пробовал только $ user_exists и с $ data, но не работал. Если я прокомментирую $ this-> Auth-> login() и попробую после этого отладить AuthComponent :: user(), я получаю данные пользователя. Как AuthComponent :: login() останавливает аутентификацию только для действия. Если я перенаправляю пользователя, аутентификация не работает. Но если я снова вернусь к действию connect, аутентификация будет работать. Сумасшедший, нет ?! –

+0

, так что вы уже вошли в систему, когда вы вызываете метод login()? в этом случае метод вернет false, и ручной вход, вероятно, не будет работать. – mark

+0

Нет, я не вошел в систему, когда я вызываю метод login(), потому что, когда я перенаправляюсь в ограниченную область, AuthComponent говорит, что я не зарегистрирован. –

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