【发布时间】:2017-12-14 22:03:16
【问题描述】:
我有一个 Laravel 5.4 应用程序,我必须从外部 API 对我的管理员用户进行身份验证,当成功登录时,它会返回一个带有用户信息的 JSON。
我正在创建一个自定义守卫来做到这一点:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users'
],
'custom' => [
'driver' => 'session',
'provider' => 'customusers'
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
这是我的自定义提供者:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'customusers' => [
'driver' => 'jsonresponse',
'model' => App\Admin::class,
]
],
在那之后,我不知道如何继续。我已经阅读了一些类似the one from George Buckingham 的教程,并且我创建了一个自定义用户提供程序(现在我只需要它从 EloquentUserProvider 扩展,最终我将重写一些函数来连接到 API)
<?php
namespace App\Providers;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Support\Str;
class CustomUserProvider extends EloquentUserProvider {
}
然后在 App\Providers\AuthServiceProvider 中注册它
public function boot()
{
$this->registerPolicies();
Auth::provider('jsonresponse', function($app, array $config) {
return new CustomUserProvider($app['hash'], $config['model']);
});
}
在 config/app.php 中
'providers' => [
// Lots of other providers
// Own providers
App\Providers\CustomUserProvider::class,
],
但在那之后,我收到以下错误:
参数 1 传递给 Illuminate\Auth\EloquentUserProvider::__construct() 必须是 Illuminate\Contracts\Hashing\Hasher 的实例, Illuminate\Foundation\Application 给定,调用 /var/www/public/iberorides/vendor/laravel/framework/src/Illuminate/Foundation/Application.php 在第 612 行并定义
如果我重写我的 CustomUserProvider 的构造函数并更改 AuthServiceProvider 中的闭包中的参数,我会收到以下错误:
参数 1 传递给 Illuminate\Foundation\Application::bootProvider() 必须是 Illuminate\Support\ServiceProvider 的实例, App\Providers\IberoUserProvider 给定,调用 /var/www/public/iberorides/vendor/laravel/framework/src/Illuminate/Foundation/Application.php 在第 771 行并定义
这让我觉得我做事的方式不对。
有人能把我引向正确的方向吗?
非常感谢。
【问题讨论】:
标签: php laravel laravel-5.4