我注意到在需要用户登录的示例WelcomeController中有:
public function __construct()
{
$this->middleware('guest');
}
我是否应该创建一个扩展Controller的BaseController,其中包含需要用户登录的所有控制器的上述代码,并从中扩展我的所有控制器?
答案 0 :(得分:0)
我不推荐这样做。相反,请考虑将中间件应用到您的路线,例如:
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 btw。
的默认示例中修改强>
提供另一个BaseController是可能的,因为它显然有效。但想想更复杂的情况,其中中间件可能只需要应用于一些但不是所有控制器方法。
在这些情况下,路线提供了更多的灵活性。
但最重要的是保持一致。因此,只需选择适用的内容,但防止自己混淆方法。这样,您的应用就可以保持可维护状态。
另一个需要注意的重要事项是,这种方法非常类似于处理此问题的Laravel 4(Route Filters)。因此,如果您选择以这种方式进行,那么从L4切换的人可能没有理解那里发生的事情。