InvalidArgumentException 路由 [login] 未定义。在 Laravel 5.6 中。

10 浏览
0 Comments

InvalidArgumentException 路由 [login] 未定义。在 Laravel 5.6 中。

路由[login]未定义。

C:\xampp\xampp\htdocs\MMICTLTD\vendor\laravel\framework\src\Illuminate\Routing\UrlGenerator.php

伙计们,我需要你们的帮助,我一直在遇到这个路由未定义的错误,我正在运行laravel 5.6

我尝试设置多重认证,但这个错误让我非常沮丧。有人能帮忙吗?

我的handler.php

expectsJson()) {
            // code...
            return response()->json(['error' => '未经身份验证。'], 401);
          }
          $guard = array_get($exception->guards(), 0);
          switch ($guard) {
            case 'admin':
              $login = 'admin.login';
              break;
            default:
                return redirect()->guest(route('login'));
              break;
          }
    }
}

我的路由

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| 这里是你可以为应用程序注册web路由的地方。这些路由由RouteServiceProvider在一个包含“web”中间件组的组中加载。现在开始创建一些伟大的事物吧!
|
*/
Route::get('/',[
    'uses' => 'ShopController@getHome',
    'as' => 'layouts.master',
]);
Route::get('/shop',[
    'uses' => 'ShopController@getIndex',
    'as' => 'pages.shop',
]);
Route::get('/blog',[
    'uses' => 'ShopController@getblog',
    'as' => 'pages.blog',
]);
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::GET('admin/home','AdminController@index');       
Route::GET('login','Admin\LoginController@showLoginForm')->name('admin.login');
Route::POST('login','Admin\LoginController@login');                  
Route::POST('admin-password/email','Admin\ForgotPasswordController@sendResetLinkEmail')->name('admin.password.email'); 
Route::GET('admin-password/reset', 'Admin\ForgotPasswordController@showLinkRequestForm')->name('admin.password.request');
Route::POST('admin-password/reset','Admin\ResetPasswordController@reset'); 
Route::GET('admin-password/reset/{token}', 'Admin\ResetPasswordController@showResetForm')->name('admin.password.reset');

0
0 Comments

原因:在Laravel 5.6中,如果在Auth::routes()之前定义了login路由,那么在使用redirect()函数重定向到login路由时,会出现InvalidArgumentException异常,提示"Route [login] not defined."。

解决方法:将定义login路由的代码放在Auth::routes()之前。

具体操作如下:

将以下代码:

Route::GET('login','Admin\LoginController')->name('admin.login');

放在以下代码之前:

Auth::routes();

修改后的代码如下:

Route::GET('login','Admin\LoginController')->name('admin.login');

Auth::routes();

同时,将以下代码用于重定向:

return redirect()->guest(route('admin.login'));

希望这能帮到你。

0
0 Comments

在Laravel 5.6中出现了"InvalidArgumentException Route [login] not defined."的错误。这个错误的原因是在代码中使用了错误的路由名称,并且使用了错误的重定向方法。解决这个问题的方法是更正路由名称并使用正确的重定向方法。

具体来说,错误的代码中使用了"admin.login"作为路由名称,但实际上应该使用"login"作为路由名称。因此,需要将代码中的:

return redirect()->guest(route('admin.login'));

更正为:

return redirect()->guest(route('login'));

此外,还需要注意,如果在代码中使用了Auth::routes()方法,可能会导致路由被覆盖。相关的解决方法可以在这里找到。

通过以上的更正和注意事项,可以解决"InvalidArgumentException Route [login] not defined."的错误。

0