Кажется, логин не работает в laravel - PullRequest
0 голосов
/ 12 марта 2019

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

Я могу безопасно создать ссылку и отправить ее по электронной почте, используя функции URL в laravel, используя этот код:

Генерация ссылки:

$url = "some/page/".$travel_id;
  $link = URL::temporarySignedRoute(
     'autologin', now()->addDay(), [
         'user_id'       => 3,
         'url_redirect'  => $url,
     ]
 );

И отправка почты:

Mail::send('emails.travel', $data, function ($message) use ($data) {
     $message->from('mail@mail.com', 'blablabla');

     $message->to('reciever@mail.com', 'blablabla')->subject('test');
  });

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

Вот маршрут:

    Route::get('/autologin', function (Request $request) {
    $user = User::findOrFail($request->user_id);
    if (! $request->hasValidSignature()) {
        abort(403);
    }

    Auth::login($user);   
    return redirect($request->input('url_redirect'));
})->name('autologin');

Когда я пытаюсь сделать Auth::check() после Auth::login($user);, он возвращает true, так что пользователь вошел в систему?

Я также пытался использовать Auth::loginUsingId($request->user_id); без каких-либо других результатов.

Есть идеи о том, что происходит?

1 Ответ

1 голос
/ 14 марта 2019

Итак, я обнаружил проблему,

Я входил в систему с пользователем рюкзака, но я использовал функцию аутентификации по умолчанию laravel.

Оказывается, мне нужно использовать: backpack_auth()->login($user);вместо Auth::login($user);, если я хочу войти, используя пользователя рюкзака.

Также используйте backpack_auth()->check() вместо Auth::check().

...