ped*_*dra 2 php laravel laravel-5
我开始学习 laravel 5.5 并尝试根据会话创建路线
\n\n我在 web.php 中的代码是:
\n\nif(session()->has("user")){\n Route::any(\'/profile/view\',"ProfileController@view");\n}\n\nif(session()->has("admin")){\n Route::any(\'/game/new\', "gameController@new");\n}\nRun Code Online (Sandbox Code Playgroud)\n\n但它不起作用,它显示“找不到页面”。
\n我怎样才能做到这一点?
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");
});
Run Code Online (Sandbox Code Playgroud)
创建中间件:
php artisan make:middleware SessionHasUser
php artisan make:middleware SessionHasAdmin
Run Code Online (Sandbox Code Playgroud)
更新中间件检查session,如果没有对应的session,则中止请求:
应用程序/Http/Middleware/SessionHasUser.php
public function handle($request, Closure $next)
{
if(session()->has("user")) {
return $next($request);
}
return abort(404);
}
Run Code Online (Sandbox Code Playgroud)
安装中间件,以便路由可以使用中间件
应用程序/Http/Kernel.php
protected $middlewareGroups = [
'web' => [
...
'session.has.user' => , \App\Http\Middleware\SessionHasUser::class,
'session.has.admin' => \App\Http\Middleware\SessionHasAdmin::class,
...
],
Run Code Online (Sandbox Code Playgroud)