【问题标题】:Laravel 5 BaseController for middlewear Auth用于中间件身份验证的 Laravel 5 基本控制器
【发布时间】:2015-03-04 20:15:03
【问题描述】:

我注意到在需要用户登录的示例 WelcomeController 中:

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

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

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

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

    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 是可能的,因为它显然有效。但是想想更复杂的情况,中间件可能只需要应用于一些但不是所有的控制器方法。

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

    但最重要的是保持一致。因此,只需选择适用的方法,但要防止自己混淆方法。这样,您的应用就可以保持可维护性。

    另一个需要注意的重要事情是,这种方法与 Laravel 4 处理此问题的方法非常相似 (Route Filters)。因此,如果您选择这样做,从 L4 切换到 L4 的人可能会毫无问题地理解那里发生的事情。

    【讨论】:

    • 你能解释一下为什么你会使用路由器而不是控制器吗?我曾经在 laravel 4 中使用这种方法,但在 laravel 5 中使用 OPs 方法。
    猜你喜欢
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2021-05-30
    • 2016-05-31
    • 2015-08-02
    • 1970-01-01
    相关资源
    最近更新 更多