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

Laravel Pulse适配非默认Guard时出现403问题求助及方案建议

问题描述

我曾在GitHub提交该问题,但2小时内被关闭,回复为“前往其他平台寻求解答”,想确认自己是否操作有误。

我的系统为管理员配置了非默认的认证守卫,默认配置如下:

'defaults' => [ 
    'guard' => 'web', 
    'passwords' => 'users', 
],

该自定义守卫admins使用AdminUser模型而非默认的User模型,相关配置如下:

  • 守卫配置:
'admins' => [ 
    'driver' => 'session', 
    'provider' => 'admins', 
],
  • 提供者配置:
'admins' => [ 
    'driver' => 'eloquent', 
    'model' => App\Models\AdminUser::class, 
],

我已安装Laravel Nova并修改其默认守卫为admins,同时在AuthServiceProvider中配置了Pulse权限:

Gate::define('viewPulse', function () { return true; });

但以管理员身份登录Nova后,访问Laravel Pulse始终返回403错误,推测原因是Laravel Pulse无法识别非默认Guard下的管理员登录状态。我认为可以通过在config/pulse.php中添加Pulse使用的守卫配置项解决问题。

复现步骤:

  1. 创建上述自定义admins守卫和对应的提供者
  2. 安装Laravel Nova并修改其默认守卫为admins
  3. 以管理员身份登录Nova后台
  4. 在AuthServiceProvider中添加viewPulse权限配置
  5. 尝试访问Laravel Pulse,收到403错误
解决方案

Laravel Pulse默认使用系统默认的web守卫做身份验证,所以即便你用admins守卫登录了Nova,Pulse依然会用web守卫校验登录状态,导致返回403。解决核心是让Pulse使用你的自定义admins守卫,以下两种方法均可:

方法一:手动覆盖Pulse路由

在routes/web.php中添加路由,指定Pulse使用admins守卫的认证中间件:

use Laravel\Pulse\Http\Controllers\DashboardController;

Route::get('/pulse', [DashboardController::class, 'show'])
    ->middleware(['web', 'auth:admins', 'can:viewPulse']);

此方式会强制Pulse路由用admins守卫验证登录状态,同时保留viewPulse的权限检查。

方法二:配置Pulse中间件组(推荐)

打开config/pulse.php,找到或新增middleware配置项,将认证中间件指定为auth:admins:

'middleware' => [
    'web',
    'auth:admins',
    'can:viewPulse',
],

修改后,Pulse的所有路由都会自动使用admins守卫校验身份。

收尾操作

修改配置后,务必清除配置缓存:

php artisan config:clear

重新登录Nova后,再访问Pulse即可正常进入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:50:32