Laravel 5 BaseController用于中装认证


Laravel 5 BaseController for middlewear Auth

我注意到,在要求用户登录的示例中,WelcomeController具有:

public function __construct()
{
    $this->middleware('guest');
}

我应该创建一个BaseController来扩展Controller吗?它包含所有需要用户登录的控制器的上述代码,并从中扩展我的所有控制器?

我不建议这样做。相反,考虑将中间件应用于您的路由,如下所示:

Route::group(['middleware' => 'auth'], function()
{
    Route::get('/', function()
    {
        // Has Auth Filter
    });
    Route::get('user/profile', function()
    {
        // Has Auth Filter
    });
});

这也包括在laravel文档btw.中分组路由的默认示例

编辑

提供另一个BaseController是可能的,因为它显然是有效的。但想想更复杂的情况,在这种情况下,中间件可能只需要应用于某些控制器方法,而不是所有控制器方法。

在这种情况下,Routes提供了更多的灵活性。

但最重要的是保持一致。所以,只需选择适用的方法,但不要让自己混淆方法。这样,您的应用程序就可以保持可维护性。

另一件需要注意的重要事情是,这种方法与Laravel 4处理这个问题的方法(路由过滤器)非常相似。因此,如果你选择这样做,从L4级别转换的人可能不会有问题理解那里发生了什么。