2014-12-27 3 views
1

Я использую yii eauth extension в своем проекте yii для входа через социальные счета. Я также читал документацию от github и russian version, но я не понимал, как использовать это расширение. Может быть, код:Непонимание использования расширения Yii eauth

$serviceName = Yii::app()->request->getQuery('service'); 
if (isset($serviceName)) { 
    /** @var $eauth EAuthServiceBase */ 
    $eauth = Yii::app()->eauth->getIdentity($serviceName); 
    $eauth->redirectUrl = Yii::app()->user->returnUrl; 
    $eauth->cancelUrl = $this->createAbsoluteUrl('site/sociallogin'); 

    try { 
     if ($eauth->authenticate()) { 
      //var_dump($eauth->getIsAuthenticated(), $eauth->getAttributes()); 
      $identity = new EAuthUserIdentity($eauth); 

      // successful authentication 
      if ($identity->authenticate()) { 
       Yii::app()->user->login($identity); 
       //var_dump($identity->id, $identity->name, Yii::app()->user->id);exit; 

       // special redirect with closing popup window 
       $eauth->redirect(); 
      } 
      else { 
       // close popup window and redirect to cancelUrl 
       $eauth->cancel(); 
      } 
     } 

     // Something went wrong, redirect to login page 
     //$this->redirect(array('site/login2')); 
     $this->render('login2', array()); 
    } 
    catch (EAuthException $e) { 
     // save authentication error to session 
     Yii::app()->user->setFlash('error', 'EAuthException: '.$e->getMessage()); 

     // close popup window and redirect to cancelUrl 
     $eauth->redirect($eauth->getCancelUrl()); 
    } 
} 

// default authorization code through login/password .. 
$this->render('login2', array()); 

Вопросы:

1) В чем разница между $eauth->authenticate() и $identity->authenticate()?

2) Где хранится таблица «users» для зарегистрированных пользователей?

Я читал это simular question уже, это не то, что мне нужно. Извините, если я задаю простой вопрос, но мне действительно нужна помощь! Заранее благодарим за любой ответ от вас!

ответ

1

попробовать

$serviceName = Yii::$app->getRequest()->getQueryParam('service'); 
    if (isset($serviceName)) { 
     /** @var $eauth \nodge\eauth\ServiceBase */ 
     $eauth = Yii::$app->get('eauth')->getIdentity($serviceName); 
     $eauth->setRedirectUrl(Yii::$app->getUser()->getReturnUrl()); 
     $eauth->setCancelUrl(Yii::$app->getUrlManager()->createAbsoluteUrl('site/sociallogin')); 

     try { 
      if ($eauth->authenticate()) { 

       $identity = User::findByEAuth($eauth); 
       Yii::$app->getUser()->login($identity); 

       // special redirect with closing popup window 
       $eauth->redirect(); 
      } 
      else { 
       // close popup window and redirect to cancelUrl 
       $eauth->cancel(); 
      } 
     } 
     catch (\nodge\eauth\ErrorException $e) { 
      // save error to show it later 
      Yii::$app->getSession()->setFlash('error', 'EAuthException: '.$e->getMessage()); 

      $eauth->redirect($eauth->getCancelUrl()); 
     } 
    } 
+0

Спасибо за ответ, но где заключена сделка, я не понял, как работает процесс аутентификации –

+0

Я знаю основные вещи о lib, но я не знал конкретных сведений, и самое главное: как я могу установить имя таблицы. существует ли какой-либо файл конфигурации, любые константы или какой-то фрагмент кода –

0

Отвечая на ваши вопросы.

1) В чем разница между $ eauth-> authenticate() и $ identity-> authenticate()?

The EAuth extension allows to authenticate users with accounts on other websites.

Вот demo. Мы видим это со знаком входа в вашу учетную запись на facebook.

Поддерживаемые протоколы: OpenID, OAuth 1.0 и OAuth 2.0.

EAuth - это расширение для предоставления единого (не зависит от выбранного сервиса) метода для аутентификации пользователя. Таким образом, расширение не выполняет вход, не регистрирует пользователя и не связывает учетные записи пользователей от разных поставщиков.

2) Где хранится таблица «users» для зарегистрированных пользователей?

Это, конечно, будет отличаться от проекта к проекту, так как у моего проекта нет текущих зарегистрированных пользователей, но вы можете добавить это в свой проект.

+1

Почему 2 ответа? Вы не можете отредактировать свой старый? – Rizier123

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