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

Laravel 9自定义Admin Guard登录后立即登出问题求助

Laravel 9 自定义Admin Guard登录后立即登出问题解决方案

以下是针对该问题的排查及解决步骤:


1. 确保路由应用Web中间件

Laravel的Session功能依赖web中间件组,只有应用该中间件,Session才能在跨请求间持久化。若你的路由未自动应用web中间件(比如自定义路由文件),需手动包裹:

Route::middleware('web')->group(function () {
    Route::get('/', function(){
        dd(Auth::guard('admin')->check()); // 登录后访问此路由应返回true
    });
    Route::get('/login', function(){
        Auth::guard('admin')->loginUsingId(1);
        dd(auth('admin')->check());
    });
});

注:routes/web.php中的路由默认已自动应用web中间件,若路由在此文件中可跳过此步。

2. 补充Admin表的remember_token字段

Authenticatable trait 要求模型对应的数据库表存在remember_token字段(可为空字符串类型),缺失该字段会导致Session无法正常保存。

  • 生成迁移文件:
php artisan make:migration add_remember_token_to_admins_table --table=admins
  • 在迁移文件中添加字段:
public function up()
{
    Schema::table('admins', function (Blueprint $table) {
        $table->rememberToken();
    });
}

public function down()
{
    Schema::table('admins', function (Blueprint $table) {
        $table->dropColumn('remember_token');
    });
}
  • 执行迁移:
php artisan migrate

3. 检查Session配置

打开config/session.php,确认以下关键配置:

  • domain:设置为当前应用域名(本地开发可留空或设为localhost)
  • path:设为'/',确保Session在整个域名下生效
  • secure:本地开发设为false,生产环境根据HTTPS部署情况调整为true

4. 清除配置缓存

修改auth.php或session.php后,需清除配置缓存确保新配置生效:

php artisan config:clear
php artisan cache:clear

5. 验证Admin模型主键

若Admin表未使用默认的id作为主键,需在模型中显式声明:

class Admin extends Authenticatable implements HasMedia
{
    // ... 其他代码
    protected $primaryKey = 'your_custom_primary_key';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:15:41