所以我使用的是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']);
}
任何想法我可以在哪里使用它?它似乎完全符合我的需要。
感谢您的任何意见!
答案 0 :(得分:0)
如果查看方法实现,它表示您可以返回Guard
或UserProvider
合同的实例。因此,在您的情况下,您可以使用此代码示例:
Auth::extend('custom', function($app)
{
return new MyCustomGuard($userProvider, $session, $request);
}
答案 1 :(得分:0)
您可以从$ app变量中获取$request
变量传递给闭包$app['request']