laravel войти с функцией запомнить меня без поля в базе данных - PullRequest
0 голосов
/ 29 августа 2018

Я занимаюсь разработкой сайта с использованием Laravel с существующей базой данных. Моя таблица пользователей не имеет поля запомнить меня. Но я хочу, чтобы пользователи всегда входили в систему, запомни меня Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 29 августа 2018

Функциональность "Запомнить меня" НУЖНА поле в БД. На самом деле вы должны хранить куки "Запомнить меня" где-то в вашей программе. Где лучшее место, чем БД, чтобы сделать это ??

Сначала вы должны добавить remember_token (100-символьная строка) к вашей таблице Users в базе данных, которая будет использоваться для хранения токена "Запомнить меня".

На следующем шаге при попытке входа в систему необходимо добавить $remember параметр, подобный следующему:

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

после этого кода ваш пользователь будет помнить его запоминающий файл cookie. ТАК его можно вспомнить так:

if (Auth::viaRemember()) {
    //
}

В любом случае, если вы хотите сохранить токен запомнить в другой таблице, вы должны определить модель, подобную RememberToken, и добавить это отношение к вашей Users модели:

public function rememberToken() {
    return $this->hasOne('RememberToken'); // also add foreign keys
}

А теперь нужно переопределить! Сначала переопределите getRememberToken() и setRememberToken() методы, а также вам нужно переопределить getRememberTokenName().

В результате EloquentUserProvider::retrieveByToken() должно быть изменено в EloquentUserProvider классе. Вероятно, вам нужно заставить вашу модель User присоединиться к таблице remember_tokens в каждом запросе, добавив к ней глобальную область и вернуть метод Remember_tokens.token из метода getRememberTokenName().

Кстати, действительно ли это необходимо?

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