仅当会话值 laravel 5 时才执行方法


Only execute methods if session value laravel 5

>我有一个控制器,其中包含许多方法,只有在会话中有某个值时才应允许执行这些方法。

这是我目前所做的:我创建了一个私有方法,该方法可以返回值"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');
}