2016-05-06 7 views
1

私はlaravelを初めて使っています。私の最初のlaravelアプリケーション(v.5.2)を作成し始めました。私はcodeigniterから来た。 CIでは、コントローラのロード前にログイン状態を確認し、言語を設定するためにコントローラ前のフックを作成しました。アプリケーション全体のもの。私はLaravel 5でプレコントローラフックを作成できますか?

laravelドキュメントのコントローラ前のフックで何も見つかりません。しかし、 "ミドルウェア"と呼ばれるものがありますが、それは仕事をするかもしれません。このミドルウェアはどの時点で起動しますか? 正しい軌道にいるのですか?またはこれらの仕事をラーベールで行うよりよい方法があります。

+0

実行するアクションによって異なります。ミドルウェアは、システムが匿名ユーザーに制限されたページアクセスを許可しないような状況で、主に画像に入ります。 –

答えて

0

はい、ミドルウェアが最適です。私はAuth Middlewareを使ってこの種の機能をアプリケーションに実装しています。

下記のようになります。

public function __construct() 
    { 
     $this->middleware('auth' , ['except' => ['show']]);   
     parent::__construct($this); 
    } 

ここでは、ログインせずにアクションを表示する権限を与えたいと考えています。

また、フォーム要求を使用して、各アクションの許可/認証を確認することもできます。

1

はい、ミドルウェアで行うことができます。 コントローラのメソッドを起動する前にミドルウェアが実行されます。

基本コントローラーを作成して、このようなことを行うメソッドを作成し、そのメソッドを基本クラスのコンストラクターから呼び出すことをお勧めしますが、

編集

だから私はちょうどあなたが、ユーザーがログインしているかどうかを確認することをお読みください。この目的のためにあなたがauthミドルウェアを持っています。

+0

あなたは:MyControllerを作成してコントローラ を拡張し、すべてのアプリケーションコントローラがコントローラの代わりに直接そのコントローラを拡張するようにしますか? HomeControllerはMyControllerを拡張します – micksp

+0

はい。私は通常これを行う。ベースコントローラーから行うことができるさまざまな共通タスクを実行する必要があります。しかし、タスクがユーザーがログインしているかどうかを確認するか、管理者であるかどうかのようなものであれば、ミドルウェアはあなたの親友です。 – Abhishek

0

Laravel 5#(5.2)

のためにあなたはApp\Http\Controllers\Controller

の表情が実際に他のすべてのコントローラがこのベースコントローラを拡張することができます。

問題: 1.この場合、経路がコントローラを使用していない場合は動作しません。