我开始学习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");
}
但它不起作用,它显示“找不到页面”。
我怎么能这样做?
答案 0 :(得分:2)
RouteServiceProvider
在StartSession
中间件之前启动,因此您无法访问路由文件中的会话。请改用middleware
进行检查。
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
更新中间件以检查会话,如果没有相应的会话,则中止请求:
应用/ HTTP /中间件/ SessionHasUser.php 强>
public function handle($request, Closure $next)
{
if(session()->has("user")) {
return $next($request);
}
return abort(404);
}
安装中间件,因此路由可以使用中间件
应用/ HTTP / Kernel.php 强>
protected $middlewareGroups = [
'web' => [
...
'session.has.user' => , \App\Http\Middleware\SessionHasUser::class,
'session.has.admin' => \App\Http\Middleware\SessionHasAdmin::class,
...
],