>我有一个控制器,其中包含许多方法,只有在会话中有某个值时才应允许执行这些方法。
这是我目前所做的:我创建了一个私有方法,该方法可以返回值"yes"或"no",我在需要验证的每个方法中调用这些方法。如果我得到返回值"yes",我会运行我的代码。
所以我在我的代码中重复了很多。一定有更好的方法
当然有更好的方法。您正在寻找中间件。首先,创建一个:
php artisan make:middleware SessionMiddleware
编辑刚刚创建的文件:
public function handle($request, Closure $next)
{
if (SESSION_KEY_IS_NOT_OK) {
abort(403);
}
return $next($request);
}
通过编辑您的应用程序/Http/内核.php文件进行注册
protected $routeMiddleware = [
'auth' => 'App'Http'Middleware'Authenticate::class,
'auth.basic' => 'Illuminate'Auth'Middleware'AuthenticateWithBasicAuth::class,
'guest' => 'App'Http'Middleware'RedirectIfAuthenticated::class,
'my_session' => 'App'Http'Middleware'SessionMiddleware::class,
];
然后,在控制器中,编辑构造函数:
public function __construct()
{
$this->middleware('my_session');
}