【发布时间】:2016-07-05 08:46:59
【问题描述】:
我想扩展 Laravel 库存身份验证以使用 OAuth 服务器进行用户检索和身份验证,同时利用现有功能。我已经设法扩展EloquentUserProvider 以部分覆盖/扩展Illuminate\Contracts\Auth\UserProvider 合约的实现。当前的实现如下所示:
class EloquentOauthServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return HcOAuthProvider;
*/
public function boot()
{
Auth::provider('oauth',function($app){
$model = $app['config']['auth.providers.oauth.model'];
$repository = new OauthUserRepository();
return new EloquentOauthUserProvider($app['hash'], $model, $repository);
});
}
}
在auth.php 配置中,我更改了这样的描述符:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'oauth',
],
]
'providers' => [
'oauth' => [
'driver' => 'oauth',
'model' => App\Models\User::class,
],
]
到目前为止,这是有效的,我可以覆盖方法来添加我的逻辑。但我意识到我还需要覆盖SessionGuard 类的一些方法(具体来说是login 和logout),因为我想使用Laravel 会话实现来保存和检索OAuth 特定令牌。有一些建议,但它们要么不起作用(也许它们在 Laravel 5.2 之前起作用),要么需要覆盖 Authmanager,这看起来有点矫枉过正。
所以我的问题是:我必须在 Laravel 5.2 中做什么来覆盖 SessionGuard?
【问题讨论】:
标签: php laravel authentication laravel-5.2