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
相关产品推荐
相关产品推荐

