Php Laravel 5.5,路由取决于会话
我开始学习laravel 5.5,并尝试根据会话创建路由 我在web.php中的代码是:Php Laravel 5.5,路由取决于会话,php,laravel,laravel-5,Php,Laravel,Laravel 5,我开始学习laravel 5.5,并尝试根据会话创建路由 我在web.php中的代码是: if(session()->has("user")){ Route::any('/profile/view',"ProfileController@view"); } if(session()->has("admin")){ Route::any('/game/new', "gameController@new"); } 但它不起作用,它会显示“未找到页面”。 如何做到这一点?Ro
if(session()->has("user")){
Route::any('/profile/view',"ProfileController@view");
}
if(session()->has("admin")){
Route::any('/game/new', "gameController@new");
}
但它不起作用,它会显示“未找到页面”。如何做到这一点?
RouteServiceProvider
在StartSession
中间件启动之前启动,因此您无法访问路由文件中的会话。使用中间件
进行检查
Route::middleware('session.has.user')->group(function () {
Route::any('/profile/view',"ProfileController@view");
});
Route::middleware('session.has.admin')->group(function () {
Route::any('/game/new', "gameController@new");
});
要创建中间件,请执行以下操作:
php artisan make:middleware SessionHasUser
php artisan make:middleware SessionHasAdmin
更新中间件以检查会话,如果没有相应的会话,请中止请求:
app/Http/Middleware/SessionHasUser.php
public function handle($request, Closure $next)
{
if(session()->has("user")) {
return $next($request);
}
return abort(404);
}
protected $middlewareGroups = [
'web' => [
...
'session.has.user' => , \App\Http\Middleware\SessionHasUser::class,
'session.has.admin' => \App\Http\Middleware\SessionHasAdmin::class,
...
],
安装中间件,以便路由可以使用中间件
app/Http/Kernel.php
public function handle($request, Closure $next)
{
if(session()->has("user")) {
return $next($request);
}
return abort(404);
}
protected $middlewareGroups = [
'web' => [
...
'session.has.user' => , \App\Http\Middleware\SessionHasUser::class,
'session.has.admin' => \App\Http\Middleware\SessionHasAdmin::class,
...
],
RouteServiceProvider
在StartSession
中间件启动之前启动,因此您无法访问路由文件中的会话。使用中间件
进行检查
Route::middleware('session.has.user')->group(function () {
Route::any('/profile/view',"ProfileController@view");
});
Route::middleware('session.has.admin')->group(function () {
Route::any('/game/new', "gameController@new");
});
要创建中间件,请执行以下操作:
php artisan make:middleware SessionHasUser
php artisan make:middleware SessionHasAdmin
更新中间件以检查会话,如果没有相应的会话,请中止请求:
app/Http/Middleware/SessionHasUser.php
public function handle($request, Closure $next)
{
if(session()->has("user")) {
return $next($request);
}
return abort(404);
}
protected $middlewareGroups = [
'web' => [
...
'session.has.user' => , \App\Http\Middleware\SessionHasUser::class,
'session.has.admin' => \App\Http\Middleware\SessionHasAdmin::class,
...
],
安装中间件,以便路由可以使用中间件
app/Http/Kernel.php
public function handle($request, Closure $next)
{
if(session()->has("user")) {
return $next($request);
}
return abort(404);
}
protected $middlewareGroups = [
'web' => [
...
'session.has.user' => , \App\Http\Middleware\SessionHasUser::class,
'session.has.admin' => \App\Http\Middleware\SessionHasAdmin::class,
...
],
最后一部分应该转到$routeMiddleware数组,而不是$middlewareGroups中。。使用您的代码,Laravel将搜索不存在的类“session.has.user”。最后一部分应转到$routeMiddleware数组,而不是$middlewareGroups中。。使用您的代码,Laravel将搜索不存在的类“session.has.user”。