Запомнить меня для пользователей на Laravel

В Laravel есть удобный механизм для запоминания пользователей. Он отмечен в мануале и в нём, по сути, нет ничего сложного. Для реализации механизма таблица users должна содержать строковый столбец remember_token, в котором Laravel будет хранить токен. Поэтому в миграции Users должна быть такая строка:

class CreateUsersTable extends Migration
public function up()
{
...
$table->rememberToken();
...
}

Из HTML для его реализации нужен лишь чекбокс «Запомнить меня», расположенный в форме авторизации. У меня он такой:

<label>
<input type="checkbox" name="remember_me" />
<span>Запомнить меня</span>
</label>

Авторизация с учетом запоминания пользователя будет такой (использую email в качестве логина)

public function login(Request $request)
    {
...
if (Auth::attempt([
            'email' => $request->get('email'),
            'password' => $request->get('password')
        ],($request->get('remember_me')=='on' ? true : false))) {
 
             //здесь код при удачной авторизации
        }
...
}

то есть в случае выбранного чекбокса Laravel активизует механизм запоминания пользователя, установит куки и запишет токен в таблицу Users в поле remember_token. Для этого всего лишь нужно указать true в третьем параметре!!!
Для проверки авторизации пользователя нужно использовать такую комбинацию:

if (Auth::check() || Auth::viaRemember()) //пускаем только авторизованных
{
    return redirect('/dashboard'); // у меня редирект в админку
} else {
    return redirect('/login'); // страница логина
}

Метод Auth::viaRemember() проверяет авторизацию через куки и токен. И всё, больше никаких телодвижений не нужно.

Вам понравиться

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *