我正在构建使用第三方身份验证数据库的应用程序。我有created a custom composer package来“拦截”对POST
的{{1}}请求。一切都很好-我能够找回用户对象并将其保存到我的(laravel)数据库中。
我现在要重定向到主页并执行“填充”操作。如果可以的话,我想尽可能地使用Laravel的本机/login
。
例如,在主页上,我正在这样做:
Auth
不足为奇,因为我没有使用Laravel的本机Auth方法,所以$foo = auth()->user()->foo->where('active', 1);
返回了auth()->user()
。在数据库中创建/找到用户后,是否可以将其绑定到Laravel的null
方法中?
谢谢您的任何建议!
编辑
阅读文档this looks like the direction I need to go,但我对如何连接/注册自定义包(我认为)...了解不足。
编辑2
我将不断更新,因为我感到自己取得了任何进展,希望它不仅可以帮助我,而且可以帮助其他人更好地了解我要完成的工作。最终帮助可能会尝试这样做的其他人。
我已经这样更新了auth()
:
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
答案 0 :(得分:1)
正如您提到的documentation建议实现自定义用户提供程序。以下步骤或多或少地描述了您将如何更详细地解决它。
php artisan make:provider CustomAuthServiceProvider
boot
方法中,您必须配置我们的身份验证提供者(将在第4步中实现)。 public function boot()
{
Auth::provider('custom-auth', function ($app, array $config) {
return new CustomAuthProvider();
});
}
auth.php
配置以使用我们在步骤2中注册的服务提供商'providers' => [
'users' => [
'driver' => 'custom-auth',
],
],
CustomAuthProvider
类并实现UserProvider interface class CustomAuthProvider implements UserProvider
{
public function retrieveById($identifier) {
// Retrieve a user by their unique identifier.
}
public function retrieveByToken($identifier, $token) {
// Retrieve a user by their unique identifier and "remember me" token.
}
public function updateRememberToken(Authenticatable $user, $token) {
// Update the "remember me" token for the given user in storage.
}
public function retrieveByCredentials(array $credentials) {
// Retrieve a user by the given credentials.
}
public function validateCredentials(Authenticatable $user, array $credentials) {
// Validate a user against the given credentials.
}
}