gpt4 book ai didi

php - Laravel 5.5, session 依赖路由

转载 作者:行者123 更新时间:2023-12-02 20:26:55 24 4
gpt4 key购买 nike

我开始学习 laravel 5.5,我正在尝试根据 session 创建路线

我在 web.php 中的代码是:

if(session()->has("user")){
Route::any('/profile/view',"ProfileController@view");
}

if(session()->has("admin")){
Route::any('/game/new', "gameController@new");
}

但它不起作用,它显示“页面未找到”。
我怎样才能做到这一点?

最佳答案

RouteServiceProviderStartSession 中间件之前启动,因此您无法访问路由文件中的 session 。使用中间件进行检查。

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

更新中间件检查session,如果没有对应的session,则中止请求:

app/Http/Middleware/SessionHasUser.php

public function handle($request, Closure $next)
{
if(session()->has("user")) {
return $next($request);
}
return abort(404);
}

安装中间件,以便路由可以使用中间件

app/Http/Kernel.php

protected $middlewareGroups = [
'web' => [
...
'session.has.user' => , \App\Http\Middleware\SessionHasUser::class,
'session.has.admin' => \App\Http\Middleware\SessionHasAdmin::class,
...
],

关于php - Laravel 5.5, session 依赖路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49679131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com