РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
90 of 1392 menu

Поле rememberToken

Метод rememberToken используется в миграциях Laravel для добавления специального поля remember_token в таблицу пользователей. Это поле предназначено для хранения уникального токена, который позволяет автоматически аутентифицировать пользователя при повторных посещениях сайта через механизм "запомнить меня". В отличие от других полей, rememberToken не принимает параметров и автоматически создает колонку типа string длиной 100 символов с возможностью хранения NULL.

Синтаксис

<?php Schema::create('table', function (Blueprint $table) { $table->rememberToken(); }); ?>

Пример использования в миграции

Давайте создадим таблицу пользователей с полем для токена запоминания:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateUsersTable extends Migration { public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } public function down() { Schema::dropIfExists('users'); } } ?>

Результат SQL запроса

Сгенерированный SQL-запрос для созданной таблицы:

CREATE TABLE users ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, email_verified_at TIMESTAMP NULL, password VARCHAR(255) NOT NULL, remember_token VARCHAR(100) NULL, created_at TIMESTAMP NULL, updated_at TIMESTAMP NULL );

Использование в модели пользователя

Laravel автоматически использует поле remember_token при аутентификации:

<?php namespace App\Models; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable { use Notifiable; protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ]; } ?>

Пример аутентификации с запоминанием

При входе в систему можно использовать метод attempt с параметром remember:

<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class LoginController extends Controller { public function login(Request $request) { $credentials = $request->only('email', 'password'); $remember = $request->has('remember'); if (Auth::attempt($credentials, $remember)) { $res = "Login successful"; echo $res; return redirect()->intended('dashboard'); } $res = "Invalid credentials"; echo $res; return back()->withErrors(['email' => 'Invalid credentials']); } } ?>

Пример ручного обновления токена

Вы можете вручную обновить токен запоминания пользователя:

<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Str; class UserController extends Controller { public function refreshToken($userId) { $user = User::find($userId); if ($user) { $user->remember_token = Str::random(60); $user->save(); $res = "Token refreshed successfully"; echo $res; } else { $res = "User not found"; echo $res; } } } ?>

Смотрите также

  • метод string,
    который создает строковое поле для таблицы
  • метод timestamps,
    который добавляет поля created_at и updated_at
  • класс Blueprint,
    который используется для построения схемы таблицы
  • метод create,
    который создает новую таблицу в базе данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить