#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. да, я не мог видеть лес за деревьями, спасибо!