Laravel: ¿Qué es " remember token "en la tabla de base de datos" users"?


¿Es seguro usar remember_token en la tabla users para autenticar al usuario en la aplicación?

¿Cuál es el propósito de este token? Actualmente, lo estoy usando en formularios para verificar si el usuario ha iniciado sesión; si el token no está presente, muestro la pantalla de inicio de sesión. Cada vez que el usuario cierra sesión, este token se regenera.

Author: Jan Żankowski, 2014-04-24

4 answers

No. No se supone que se use para autenticar. Es utilizado por el framework para ayudar contra el secuestro de cookies Remember Me. El valor se actualiza al iniciar sesión y cerrar sesión. Si una cookie es secuestrada por una persona maliciosa, cerrar sesión hace que la cookie secuestrada sea inútil, ya que ya no coincide.

Refiérase a esta documentación:

Https://laravel.com/docs/upgrade#upgrade-4.1.26

 41
Author: sidneydobber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-15 20:26:43

Tuve que agregar remember_token a mi migración de tabla de usuarios para que Auth::logout() funcionara correctamente.

Añadido remember_token a mis migraciones como tal.

<?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');

    }

}

Desde la línea de comandos tiene que soltar la tabla users, luego migrate/seed.

 6
Author: Cyril T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-05 18:35:00

Laravel proporciona un token CSRF en una entrada oculta que agrega y valida automáticamente cada vez que se envía un formulario, ya sea que haya iniciado sesión o no. Si estás usando su creador de formularios, esto está sucediendo sin que ni siquiera tengas que comprobarlo.

Debe comprobar si el usuario ha iniciado sesión en el envío utilizando la fachada Auth.

 1
Author: DanielM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-19 01:21:24

Incluso si esta es una pregunta antigua, quería presentar una opción no use el token si no lo necesita (por ejemplo, no tenga la opción recordarme en su sitio).

En lugar de agregar una columna ficticia a su tabla de usuarios, puede evitar que Auth::logout() la configure.

Simplemente agregue esto a su modelo de usuario (funciona a partir de Laravel 5.6):

public function save(array $options = array()) {
    if(isset($this->remember_token))
        unset($this->remember_token);

    return parent::save($options);
}

Esto elimina la columna' remember_token ' justo antes de que el modelo se guarde y, por lo tanto, evita que se genere un error debido a la columna inexistente.

 1
Author: LinusCDE98,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-13 07:03:25