我有一个控制器,有许多方法,只有在我的会话中有一定值时才允许执行。
这就是我现在所做的: 我创建了一个私有方法,可以返回值'yes'或'no'我在每个需要验证的方法中调用它。如果我得到返回值'是',我运行我的代码。
所以我在我的代码中重复了很多。必须有更好的方法
答案 0 :(得分:1)
当然有更好的方法。您正在寻找一个中间件。首先,创建一个:
php artisan make:middleware SessionMiddleware
编辑刚刚创建的文件:
public function handle($request, Closure $next)
{
if (SESSION_KEY_IS_NOT_OK) {
abort(403);
}
return $next($request);
}
通过编辑app / Http / Kernel.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');
}