仅在会话值laravel 5时执行方法

时间:2015-06-21 08:10:03

标签: php laravel laravel-5

我有一个控制器,有许多方法,只有在我的会话中有一定值时才允许执行。

这就是我现在所做的: 我创建了一个私有方法,可以返回值'yes'或'no'我在每个需要验证的方法中调用它。如果我得到返回值'是',我运行我的代码。

所以我在我的代码中重复了很多。必须有更好的方法

1 个答案:

答案 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');
}