Laravel 5 - Custom Guard

时间:2015-01-10 13:02:03

标签: php laravel laravel-5

所以我使用的是Laravel 5,对于更复杂的身份验证,我需要重载Laravel的Guard实现的方法attempt

但是,我很难找到应该替换Guard的地方。

  • 我是否需要替换Illuminate\Auth\AuthManager,然后替换Illuminate\Auth\Guard,并更改服务提供商,仅用于一次重载?这是可行的但似乎很重。
  • 在浏览Illuminate\Auth\AuthManager后,我开始找到这种方法:

    /**
     * Call a custom driver creator.
     *
     * @param  string  $driver
     * @return \Illuminate\Auth\Guard
     */
    
    protected function callCustomCreator($driver)
    {
        $custom = parent::callCustomCreator($driver);
    
        if ($custom instanceof Guard) return $custom;
    
        return new Guard($custom, $this->app['session.store']);
    }
    

    任何想法我可以在哪里使用它?它似乎完全符合我的需要。

感谢您的任何意见!

2 个答案:

答案 0 :(得分:0)

如果查看方法实现,它表示您可以返回GuardUserProvider合同的实例。因此,在您的情况下,您可以使用此代码示例:

Auth::extend('custom', function($app)
{
    return new MyCustomGuard($userProvider, $session, $request);
}

答案 1 :(得分:0)

您可以从$ app变量中获取$request变量传递给闭包$app['request']