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

Laravel 10中出现无效路由操作错误的求助

解决Laravel UnexpectedValueException: Invalid route action错误

问题详情

触发UnexpectedValueException错误,提示信息:

Invalid route action: [App\Http\Controllers\Auth\LoginController]

错误提示询问是否遗漏__invoke方法,或是路由文件未指定控制器方法。但未使用可调用控制器,路由中指定的方法也存在,目前无法执行artisan命令,所有页面均无法加载。

相关代码

routes/web/auth.php

<?php

declare(strict_types=1);

use App\Http\Controllers\Auth\LoginController;
use Illuminate\Support\Facades\Route;

Route::get('login', [LoginController::class, 'create'])
    ->name('auth.login.create');

Route::post('login', [LoginController::class, 'store'])
    ->name('auth.login.store');

Route::post('logout', [LoginController::class, 'delete'])
    ->name('auth.logout');

App\Http\Controllers\Auth\LoginController

<?php

declare(strict_types=1);

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Http\Requests\LoginRequest;
use App\Traits\LoginTrait;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

final class LoginController extends Controller
{
    use LoginTrait;

    private const HOME_ROUTE = 'home.index';

    public function create(): View
    {
        return view('auth.login', [
            'title' => 'Log In'
        ]);
    }

    public function store(LoginRequest $request): RedirectResponse
    {
        $credentials = [
            'samaccountname' => $request->username,
            'password' => $request->password
        ];

        if (Auth::attempt($credentials)) {
            $request->session()->regenerate();

            $message = $this->getSuccessMessage();

            $request->session()->flash('success', $message);

            return redirect()->intended();
        }

        $request->session()->flash('error', 'The provided credentials do not match our records.');

        return back()->onlyInput('username');
    }

    public function delete(Request $request): RedirectResponse
    {
        Auth::logout();

        $request->session()->invalidate();
        $request->session()->regenerateToken();
        $request->session()->flash('success', 'You have been logged out.');

        return redirect()->route(self::HOME_ROUTE);
    }
}

已从Laravel文档中复制LoginController的导入语句。

排查与解决方案

  • 验证控制器文件路径与命名空间:确认LoginController.php文件存在于app/Http/Controllers/Auth/目录下,文件名与类名(LoginController)大小写完全一致(Linux系统严格区分大小写)。
  • 清除路由缓存:手动删除bootstrap/cache/routes.php文件,若后续能运行artisan,执行php artisan route:cache重新生成缓存。
  • 检查路由文件加载逻辑:确认routes/web/auth.php在RouteServiceProvider中被正确加载,比如在boot方法内是否有类似Route::middleware('web')->group(base_path('routes/web/auth.php'));的代码。
  • 检查依赖与兼容性:确保PHP版本符合当前Laravel版本要求,必要的扩展(如mbstring、xml、ctype等)已启用。
  • 验证类的可访问性:确认LoginController类未被错误定义为抽象类,所有指定的方法(create/store/delete)均为public权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:12:02