我对laravel很陌生,我试图定义我的routes.And --如果用户没有经过身份验证,逻辑是"/“路由到"/login”,而下面的"/login“路由是登录查看blade.Down的路由。
Auth::routes();
Route::get('/clear-cache', function() {
Artisan::call('cache:clear');
});
Route::get('login', function (){
return view('auth/login');
});
Route::get('register', function (){
if(Auth::check()){
return view('home');
}else{
return view('auth/register');
}
});
Route::get('/', function () {
if(Auth::check()){
return view('home');
}else{
return redirect('/login');
}
});
Route::get('/home', 'HomeController@index')->name('home');但是我一直收到这个错误“路由登录没有定义”。我看不出有什么问题。
发布于 2020-04-09 18:33:41
如果我将Auth::routes()添加到一个新鲜的laravel 7中,安装就会在artisan route:list上显示这一点
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | GET|HEAD | password/confirm | password.confirm | App\Http\Controllers\Auth\ConfirmPasswordController@showConfirmForm | web,auth |
| | POST | password/confirm | | App\Http\Controllers\Auth\ConfirmPasswordController@confirm | web,auth |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web |
| | POST | password/reset | password.update | App\Http\Controllers\Auth\ResetPasswordController@reset | web |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+然后,您应该避免使用不同的实现再次定义相同的路由。让拉勒维尔为你做这件事。
正如您所看到的,已经有一些中间件应用于这些预定义的路由。在这个场景中,web不是中间件本身,而是定义在app/Http/Kernel.php上的中间件组。有关中间件组的更多信息,请参见下面。
如果要从项目中“删除”/ -route,可以使用重定向路由。
https://laravel.com/docs/7.x/routing#redirect-routes
因此,您的路由文件应该是这样的:
Auth::routes();
Route::get('/clear-cache', function() {
Artisan::call('cache:clear');
});
// this will let laravel automatically redirect again if already logged in
Route::permanentRedirect('/', '/login');
Route::get('/home', 'HomeController@index')->name('home');将您重定向到/home-route的自动化是app/Http/Middleware/RedirectIfAuthenticated.php和app/Providers/RouteServiceProvider.php之间的一种交互。
在后者中,有一个属性定义了您的HOME
/**
* The path to the "home" route for your application.
*
* @var string
*/
public const HOME = '/home';如果以后有更多应用auth()-middleware的路由,那么有三种方法可以做到这一点(或者可能是4条):
请将以下示例与此链接进行比较:
https://laravel.com/docs/7.x/middleware#middleware-groups
一般情况下,在开始时可能有点难以看出,控制器路由和使用闭包函数的路径没有区别。对于这两种实现,可以使用的方法是相同的。只有应用程序中路由的处理将有所不同。
对于需要中间件的单一路由,只需将其添加到末尾即可。这既适用于控制器路线,也适用于关闭路线。
Route::get('/', function () {
//
})->middleware('web');
// ^^^^ is as possible as:
Route::get('/', 'Controller@Method')->middleware('web');对于使用同一中间件的多个路由,请使用中间件方法。可以使用作为数组的一部分分配的多个中间件。
Route::middleware(['web', 'subscribed'])->group(function () {
//
});如果您仍然需要更多的定制,直接使用group()-method。在这里,不仅可以定义中间件,还可以为所有封闭式路由定义前缀。
Route::group(['middleware' => ['web'], 'prefix'=>'admin'], function () {
//
});作为最后一个选项,您可以将任何您想要的中间件添加到现有的中间件组中,或者在app/Http/Kernel.php?中添加自己的中间件组。但是这将导致相当强的集成,很难构建异常,因为如果您想要偏离轨道,中间件组中的所有内容都会一直用于该组应用到的每一条路由。
请不要将路由组和中间件组混为一谈,因为这些是不同的东西。
所有这些例子都是在第7版的文档中找到的,所以它们也应该适用于您的情况。
https://stackoverflow.com/questions/61126221
复制相似问题