You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel登录控制器如何实现用户始终保持登录状态?

解决Laravel登录控制器中始终记住用户的问题

我来帮你搞定这个问题!你遇到的情况很常见,直接设置$remember_me = 1无效,大概率是因为没正确使用Auth::attempt()的第三个参数,或者缺少必要的模型字段。下面是一步步的解决方案:

1. 确保用户模型包含remember_token字段

Laravel的"记住我"功能依赖用户表中的remember_token字段,用来存储登录令牌。如果你的用户表没有这个字段,需要先添加:

  • 创建新的迁移文件:
php artisan make:migration add_remember_token_to_users_table --table=users
  • 在迁移文件中添加字段定义:
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->rememberToken();
    });
}

public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropRememberToken();
    });
}
  • 执行迁移生效:
php artisan migrate

2. 正确调用Auth::attempt()强制记住用户

Auth::attempt()方法的第三个参数是布尔值,专门用来控制是否记住用户。你只需要把这个参数设为true,就能实现始终记住登录用户,不管前端有没有传"记住我"的参数。修改后的控制器代码如下:

public function postSignin(Request $request, AppMailer $mailer) {
    $this->validate($request, [
        'email' => 'required',
        'password' => 'required',
    ]);

    $username = $request->get('email');
    $password = $request->get('password');
    $field = filter_var($username, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';

    // 第三个参数传true,强制启用"记住我"功能
    if (Auth::attempt([$field => $username, 'password' => $password], true)) {
        // 登录成功后的跳转或业务逻辑
        return redirect()->intended('/dashboard');
    }

    // 登录失败,返回错误提示
    return back()->withErrors([
        'credentials' => '用户名/邮箱或密码不正确,请重试'
    ]);
}

3. 检查配置文件(可选)

如果还是存在问题,可以确认config/auth.php中的"记住我"配置是否正常:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
],

'remember' => [
    'driver' => 'cookie',
    'expire' => 10080, // 默认7天,可根据需求调整有效期
],

另外,确保你的用户模型已经使用了Illuminate\Notifications\Notifiable trait(Laravel默认的User模型已经包含这个trait),它会自动处理remember_token的读写逻辑。

内容的提问来源于stack exchange,提问作者Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:09:04