Запомнить меня для пользователей на 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() проверяет авторизацию через куки и токен. И всё, больше никаких телодвижений не нужно.



