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

Laravel+Filament环境下如何确保登出始终重定向至/app/login?

解决Filament 3.x会话丢失后重定向至/app/login的问题

问题分析

正常登出Filament面板会跳转至/app/login,但当会话意外丢失(比如执行php artisan migrate:fresh清除会话)时,系统会默认跳转到/login,修改默认Authenticate中间件后问题未解决,核心原因是路由名称使用错误,未匹配Filament面板的路由命名规则。

解决方案

1. 修正Authenticate中间件的路由名称

Filament面板的登录路由采用固定命名规则:filament.{panel-id}.login,你的面板ID是app,因此正确的路由名称是filament.app.login,而非直接使用URL路径app/login。

修改app/Http/Middleware/Authenticate.php中的redirectTo方法:

protected function redirectTo($request)
{
    if (! $request->expectsJson()) {
        return route('filament.app.login');
    }
}

2. 验证Filament路由配置

执行以下命令查看Filament路由列表,确认登录路由的名称和URL对应关系:

php artisan route:list

你会看到类似如下的条目:

GET|HEAD        app/login .................................... filament.app.login › Filament\Http\Controllers\Auth\LoginController@create

3. 确保Filament面板应用正确的认证中间件

在app/Providers/Filament/AppPanelProvider.php中,明确指定面板使用自定义的认证中间件,保证未认证请求被正确拦截:

class AppPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            ->default()
            ->id('app')
            ->path('app')
            ->login()
            ->profile()
            ->authMiddleware([
                \App\Http\Middleware\Authenticate::class,
                \Illuminate\Session\Middleware\AuthenticateSession::class,
            ]);
    }
}

4. 测试会话丢失场景

执行php artisan migrate:fresh清除会话后,访问Filament面板路由,此时系统会自动重定向至/app/login,问题即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:45:18