Laravel: Что такое "remember_token" в таблице "users" DB?
Безопасно ли использовать remember_token
в таблице users для аутентификации пользователя в приложении?
Какова цель этого токена? В настоящее время я использую его в формах, чтобы проверить, вошел ли пользователь в систему - если токен отсутствует, я показываю экран входа. Каждый раз, когда пользователь выходит из системы, этот токен восстанавливается.
Ответы
Ответ 1
Нет. Он не должен использоваться для аутентификации. Он используется каркасом, чтобы помочь предотвратить захват печенья Remember Me
. Значение обновляется после входа и выхода из системы. Если печенье захвачено злоумышленником, выведение из него делает бесполезным куки файл, поскольку он больше не подходит.
Обратитесь к этой документации:
https://laravel.com/docs/upgrade#upgrade-4.1.26
Ответ 2
Мне пришлось добавить remember_token
в мою миграцию таблицы пользователей, чтобы Auth::logout()
работал правильно.
Добавлено remember_token
для моих миграций как таковых.
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('lname', 32);
$table->string('fname', 32);
$table->string('username', 32);
$table->string('email', 320);
$table->string('remember_token', 100);
$table->string('password', 64);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::drop('users');
}
}
Из командной строки вы должны отбросить таблицу пользователей, а затем перенести/семя.
Ответ 3
Laravel предоставляет токен CSRF в скрытом входе, который он автоматически добавляет и проверяет, когда будет отправлена форма, независимо от того, вошли ли вы в систему или нет. Если вы используете их построитель форм, это происходит без необходимости даже проверять его.
Вы должны проверить, зарегистрирован ли пользователь при отправке с использованием фасада Auth
.
Ответ 4
Даже если это старый вопрос, я хотел бы представить вариант не использовать токен, если он вам не нужен (например, на вашем сайте не помню).
Вместо добавления фиктивного столбца в таблицу users вы можете просто запретить Auth :: logout() установить его.
Просто добавьте это в свою модель пользователя (работает с Laravel 5.6):
public function save(array $options = array()) {
if(isset($this->remember_token))
unset($this->remember_token);
return parent::save($options);
}
Это удаляет столбец "remember_token" непосредственно перед тем, как модель будет сохранена и, таким образом, предотвратит появление ошибки из-за несуществующего столбца.