Laravel loginUsingId не работает - PullRequest
0 голосов
/ 17 мая 2019

Мне нужно вручную войти в систему в Laravel 5.7 через Auth.Как только я запускаю Auth :: loginUsingId ($ userId, true), я затем перемещаю пользователя на страницу его учетной записи.

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

Я попробовал все, что смог найти в Интернете, включая перемещение сеанса из MiddlewareGroup в Middleware, проверку имени файла cookie и некоторые другие вещи, которые не работали.

Мой контроллер выглядит примерно так:

public function loginExternal(Request $request) {
  $userId = $request->uid;

  Auth::loginUsingId($userId, true);

  redirect()->to('/account')->send();
}

, и маршрут для него довольно прост:

Route::get('/oneclick/{token}', 'Auth\AccountController@loginExternal')->middleware('signed')->name('oneclick');

Я бы ожидал, что пользователь войдет в систему и автоматически попадет в свою учетную запись.Теперь он просто отправляет меня на страницу входа.

Я заметил, что метод loginUsingId () генерирует новый идентификатор сеанса только в этом контроллере, но на других страницах веб-сайта веб-сайт использует другойсеанс, тот же (который должен произойти).

Я должен упомянуть, что пользователь получает вход в метод LoginExternal.Это просто не сохраняется на странице учетной записи.

Есть идеи?

1 Ответ

0 голосов
/ 17 мая 2019

В контроллере:

public function loginExternal($id) {

  $user = User::find($id);

  if($user){
     \Auth::loginUsingId($id, true);

     return redirect('/account');
  } else {
     return redirect('/')->with('error_message', 'No user found!');
  }

}

В файле маршрута (web.php)

Route::get('/oneclick/{id}', 'Auth\AccountController@loginExternal')->name('oneclick');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...