Laravel аутентификация запомнить меня функция не работает - PullRequest
0 голосов
/ 20 февраля 2020

Я пробовал некоторые решения, упомянутые на этой платформе, но каждый раз терпел неудачу. Мое Laravel приложение имеет функцию аутентификации, и пользователи могут войти с помощью электронной почты или идентификатора с паролем. Это работает хорошо, но функция "запомнить меня" не работает.

MySQL В таблице 'users' есть поле 'Remember_token', и оно заполняет значение токена в поле, когда я пытаюсь войти в систему с помощью 'Запомнить меня' флажок установлен.

enter image description here

И функция 'попытки' также вызывается с логическим значением в качестве второго параметра.

protected function attemptLogin(Request $request)
{
    Log::info($request); // 'remember' => 'on',
    return $this->guard()->attempt(
        $this->credentials($request), $request->filled('remember')
    );
}

Следующее изображение имеет первый логин. enter image description here

Если я нажимаю «Выйти», он снова перенаправляет на страницу входа и выглядит следующим образом. enter image description here

Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.

[EDIT] Добавлен некоторый код в файл login.blade. php.

    @csrf
<div class="form-group row">
    <label for="identity" class="col-md-4 col-form-label text-md-right">メール または ID</label>

    <div class="col-md-6">
        <input id="email" type="identity" class="form-control @error('email') is-invalid @enderror" name="identity" value="{{ old('email') }}" required autocomplete="email" autofocus>

        @error('email')
            <span class="invalid-feedback" role="alert">
                <strong>{{ $message }}</strong>
            </span>
        @enderror
    </div>
</div>

<div class="form-group row">
    <label for="password" class="col-md-4 col-form-label text-md-right">パスワード</label>

    <div class="col-md-6">
        <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">

        @error('password')
            <span class="invalid-feedback" role="alert">
                <strong>{{ $message }}</strong>
            </span>
        @enderror
    </div>
</div>

<div class="form-group row">
    <div class="col-md-6 offset-md-4">
        <div class="form-check">
            <input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>

            <label class="form-check-label" for="remember">
                次回から自動ログインする
            </label>
        </div>
    </div>
</div>

PS: я установил voyager в laravel app.

1 Ответ

1 голос
/ 20 февраля 2020

Вам нужно передать некоторую информацию о запоминании в Auth :: попытки

if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) {
    // The user is being remembered...
}

Если вы хотите обеспечить функциональность "запомнить меня" в своем приложении, вы можете передать логическое значение в качестве второго аргумента метода попытки, который будет поддерживать аутентификацию пользователя в течение неопределенного времени или до тех пор, пока он не выйдет вручную. Разумеется, ваша таблица пользователей должна включать в себя строку столбца Remember_token, которая будет использоваться для хранения токена «Запомнить меня».

https://laravel.com/docs/5.5/authentication#remembering -users

...