2016-05-06 79 views
1

我是laravel的新手,剛開始構建我的第一個laravel應用程序(v.5.2)。我來自codeigniter。在CI中,我曾經創建一個預控制器鉤子來檢查登錄狀態並在任何控制器加載之前設置語言。應用範圍內的東西。我可以在Laravel 5中創建預控制器鉤子

我找不到laravel文檔中的前控制器掛鉤上的任何內容。有一種叫做「中間件」的東西可以完成這項工作。這個中間件在什麼時候啓動? 我在正確的軌道上嗎?或者有沒有更好的方式在laravel做這些工作。

+0

這取決於您想要執行的操作。在系統不允許匿名用戶訪問受限頁面的情況下,中間件主要涉及圖片。 –

回答

0

是的,中間件是最好的選擇。我正在使用身份驗證中間件在我的應用程序中實現這種功能。

像下面一樣。

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

在這裏,我想給的權限,只顯​​示行動沒有登錄。

您還可以使用表單請求來檢查每個操作的權限/身份驗證。

1

是的,你可以用中間件來做到這一點。 中間件將在執行控制器的方法之前執行。

雖然我會建議你做一個基礎控制器,你可以創建一個方法來做這些事情,並從基類的構造函數中調用該方法。

編輯

所以我剛纔讀您要檢查,如果用戶登錄。爲此,你必須auth中間件。

+0

您的意思是:創建MyController擴展控制器 並讓所有應用程序控制器直接擴展該控制器而不是Controller? HomeController擴展MyController – micksp

+0

是的。我通常這樣做。您將需要執行可以從您的基本控制器完成的各種常見任務。但請記住,如果任務是檢查用戶是否登錄或是管理員等,那麼中間件是您最好的朋友。 – Abhishek

0

對於Laravel 5#(5.2)

你可以有App\Http\Controllers\Controller

其實所有其他控制器的外觀擴展了該基地控制器。

問題: 1.如果路由在這種情況下不使用控制器,則不起作用。

相關問題