2015-06-21 39 views
0

我有一個控制器有很多方法應該只允許執行,如果我有一定的價值在我的會話。只執行方法,如果會話值laravel 5

這就是我目前所做的: 我做了一個私有方法,可以返回值'是'或'不是'我在每一個需要驗證的方法中調用。如果我得到返回值'是',我運行我的代碼。

所以我在我的代碼中重複了很多。必須有更好的辦法

+0

什麼是您的實際題?那麼你可以分享一些你的代碼嗎? – Cleb

回答

1

當然有更好的辦法。您正在尋找一箇中間件。首先,創建一個:

php artisan make:middleware SessionMiddleware 

編輯您剛纔創建的文件:

public function handle($request, Closure $next) 
{ 
    if (SESSION_KEY_IS_NOT_OK) { 
     abort(403); 
    } 

    return $next($request); 
} 

通過編輯您的應用程序註冊它/ 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'); 
}