HybridAuth (Anvard) — как выйти из системы и войти в систему как другой пользователь?

#php #oauth #laravel-4 #hybridauth

#php #oauth #laravel-4 #hybridauth

Вопрос:

Я использую Anvard, пакет Laravel, который реализует Hybridauth. Все вопросы, которые я читал, касаются автоматического входа в систему, а мне нужно обратное!

Сценарий:

  • Пользователь вошел в систему с помощью LinkedIn
  • нажмите выход, чтобы /anvard/logout перейти к маршруту
  • пользователь перенаправляется на /login флэш-сообщение «вышел из системы»
  • нажмите кнопку «войти с помощью LinkedIn»
  • Пользователь автоматически проходит проверку подлинности, не требуя повторной авторизации

Как пользователь может войти в систему (используя тот же браузер) с помощью LinkedIn?

Пользователь может перейти к своим связанным настройкам и отменить авторизацию приложения, но это явно непрактично 🙂

Я пытался использовать маршрут ‘anvard / logout’, а также попытался добавить следующее в свой маршрут / logout:

 Route::get('/logout', function() {

    // this is drawn from anvard's logout function
    $hybridAuth = App::make('hybridauth');
    $hybridAuth->logoutAllProviders();

    // this not working either :(
    // if(Auth::check()) {
    //     Auth::user()->remember_token = NULL;
    // }

    Auth::logout();
    Session::flush();
    return Redirect::route('login')->with('success', 'You've been Logged Out');
});
  

Как вы можете видеть.. Я просто пробую все это 🙂

Вот проблема, которую я обнаружил в hybridauth: выход из системы на самом деле не завершается # 220


Обновить:

Я просто упускаю основной принцип? Это просто, что только один пользователь может авторизоваться у любого данного провайдера в данном браузере одновременно, и чтобы разрешить другому пользователю войти в систему, пользователь должен посетить своего провайдера (LinkedIn) и выйти из системы?

В stackapps есть полезный ответ и полезный комментарий:

Итак, если используется недопустимый токен доступа, API вернет ошибку, и тогда приложение должно снова запустить пользователя через процесс аутентификации. Приложение делает это, если пользователь уже вошел в систему, а приложение все еще авторизовано, поток авторизации будет незаметно использовать файлы cookie / локальное хранилище / etc или иным образом отображать диалоговое окно OAuth, верно?

Заранее спасибо!

Ответ №1:

Я думаю, что это работает как вход в Facebook. Если я в данный момент на своем компьютере зарегистрировался через facebook, а затем вошел в систему через ваше приложение, ваше приложение устанавливает связь между моей учетной записью Facebook и учетной записью вашего сайта.

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

Поэтому, если другой человек хочет войти в систему, я сначала должен зайти на facebook и выйти из системы. Другой человек должен войти в систему на FB, а затем может войти на ваш сайт со своими учетными данными facebook.

Это то, что вы имеете в виду?

Комментарии:

1. да, я не мог видеть лес за деревьями, спасибо!