【发布时间】:2019-10-23 14:04:18
【问题描述】:
我正在构建一个使用第三方身份验证数据库的应用程序。我有created a custom composer package 来“拦截”POST 对/login 的请求。一切都很好 - 我能够取回用户对象并将其保存到我的 (laravel) 数据库中。
我现在正处于想要重定向到主页并做“事情”的地步。如果可以的话,我想尽可能多地使用 Laravel 的原生 Auth。
例如,在主页上我是这样做的:
$foo = auth()->user()->foo->where('active', 1);
毫不奇怪,因为我没有使用 Laravel 的原生 Auth 方法,auth()->user() 正在返回 null。在我的数据库中创建/找到我的用户后,是否可以重新绑定到 Laravel 的 auth() 方法?
感谢您的任何建议!
编辑
阅读文档,this looks like the direction I need to go,但我不了解如何连接/注册我的自定义包(我认为)...
编辑 2
我将继续更新此内容,因为我觉得我取得了任何进展,希望它不仅能帮助我,还能帮助其他人更好地了解我正在努力完成的工作。最终帮助其他可能尝试做同样事情的人。
我已经更新了我的app/Providers/AuthServiceProviderAuthServiceProvider:
use My\Package\MyThirdPartyServiceProvider;
...
Auth::provider('foo', function ($app, array $config) {
// Return an instance of Illuminate\Contracts\Auth\UserProvider...
return new MyThirdPartyServiceProvider($app->make('foo.connection'));
});
我还更新了我的config/auth 文件:
'providers' => [
'users' => [
'driver' => 'foo',
'model' => App\User::class,
]
【问题讨论】:
-
您将需要一个类来实现
Illuminate\Contracts\Auth\UserProvider接口(在您的包中或在您的项目中)。该类可以通过在 auth.php 中配置并在服务提供者中注册来用作身份验证驱动程序。 -
嗨,PtrTon - 请详细说明一下吗?我不关心我实现这个类的哪个项目。在高层次上,我不确定如何 来实现它。感谢您的宝贵时间!