Laravel 5 中间件 Auth 的基本控制器
Laravel 5 BaseController for middlewear Auth
我注意到在要求用户登录的示例 WelcomeController 中有:
public function __construct()
{
$this->middleware('guest');
}
我是否应该创建一个扩展 Controller 的 BaseController,其中包含需要用户登录的所有控制器的上述代码,并从中扩展我的所有控制器?
我不推荐这样做。相反,请考虑将中间件应用于您的路由,如下所示:
Route::group(['middleware' => 'auth'], function()
{
Route::get('/', function()
{
// Has Auth Filter
});
Route::get('user/profile', function()
{
// Has Auth Filter
});
});
这也包含在 grouped routes in the laravel docs 顺便说一句的默认示例中。
编辑
提供另一个 BaseController 是可能的,因为它显然有效。但是想想更复杂的情况,中间件可能只需要应用于某些而不是所有控制器方法。
路由在这些情况下提供了更多的灵活性。
但最重要的是保持一致。因此,只需选择适用的方法,但要防止自己混淆方法。这样,您的应用程序就可以保持可维护性。
另一个需要注意的重要事项是,这种方法与处理此问题的 Laravel 4 方法非常相似 (Route Filters)。因此,如果您选择那样做,从 L4 切换到 L4 的人可能不会在理解那里发生的事情上有任何问题。
我注意到在要求用户登录的示例 WelcomeController 中有:
public function __construct()
{
$this->middleware('guest');
}
我是否应该创建一个扩展 Controller 的 BaseController,其中包含需要用户登录的所有控制器的上述代码,并从中扩展我的所有控制器?
我不推荐这样做。相反,请考虑将中间件应用于您的路由,如下所示:
Route::group(['middleware' => 'auth'], function()
{
Route::get('/', function()
{
// Has Auth Filter
});
Route::get('user/profile', function()
{
// Has Auth Filter
});
});
这也包含在 grouped routes in the laravel docs 顺便说一句的默认示例中。
编辑
提供另一个 BaseController 是可能的,因为它显然有效。但是想想更复杂的情况,中间件可能只需要应用于某些而不是所有控制器方法。
路由在这些情况下提供了更多的灵活性。
但最重要的是保持一致。因此,只需选择适用的方法,但要防止自己混淆方法。这样,您的应用程序就可以保持可维护性。
另一个需要注意的重要事项是,这种方法与处理此问题的 Laravel 4 方法非常相似 (Route Filters)。因此,如果您选择那样做,从 L4 切换到 L4 的人可能不会在理解那里发生的事情上有任何问题。