Php 不了解如何制作自定义身份验证驱动程序。最终我们需要肥皂。
我对拉雷维尔很陌生,我真的需要一些帮助。我需要为我的工作创建一个简单的应用程序,我想我不会有这个问题,因为这里的教程非常优秀 我遇到的问题是,对于该项目,我需要使用SOAP web服务对外部数据库中的用户进行身份验证,如果本地数据库中不存在该用户,我将创建该用户并将其登录。我能够管理这个部分,因为我已经编写了一个Joomla插件来实现这一点 我试图找出有关如何创建自定义驱动程序的文档。我原以为,在修改之前,我会先复制EloquentUserProvider,因此我创建了:Php 不了解如何制作自定义身份验证驱动程序。最终我们需要肥皂。,php,authentication,laravel-5.1,Php,Authentication,Laravel 5.1,我对拉雷维尔很陌生,我真的需要一些帮助。我需要为我的工作创建一个简单的应用程序,我想我不会有这个问题,因为这里的教程非常优秀 我遇到的问题是,对于该项目,我需要使用SOAP web服务对外部数据库中的用户进行身份验证,如果本地数据库中不存在该用户,我将创建该用户并将其登录。我能够管理这个部分,因为我已经编写了一个Joomla插件来实现这一点 我试图找出有关如何创建自定义驱动程序的文档。我原以为,在修改之前,我会先复制EloquentUserProvider,因此我创建了: ErsAuthServ
ErsAuthServiceProvider
和ErsUserProvider
分别放在App\Providers
和App\Extensions
但它神秘地不起作用。。。我得到以下错误:
ErrorException in ErsUserProvider.php line 33: Argument 1 passed to App\Extensions\ErsUserProvider::__construct() must be an instance of Illuminate\Contracts\Hashing\Hasher, none given, called in /home/vagrant/Code/ERSTools/app/Providers/ErsAuthServiceProvider.php on line 31 and defined
实际上,在文档中,我不太了解他们对示例中的boot()
方法做了什么。我知道他们扩展了Auth
类以添加新的驱动程序(在我的例子中是ers),但我不明白他们为什么要传递$app['riak.connection']
<?php
namespace App\Providers;
use Auth;
use App\Extensions\ErsUserProvider;
use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class ErsAuthServiceProvider extends ServiceProvider
{
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any application authentication / authorization services.
*
* @param \Illuminate\Contracts\Auth\Access\Gate $gate
* @return void
*/
public function boot(GateContract $gate)
{
parent::registerPolicies($gate);
Auth::extend('ers', function($app) {
// Return an instance of Illuminate\Contracts\Auth\UserProvider...
return new ErsUserProvider;
});
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}
我汗流浃背,但第一部分我做得很好。问题出在引导方法中。我的自定义提供程序是原始laravel 5.1的工作副本,我现在可以自定义它
以下是有效的服务提供商:
<?php
namespace App\Providers;
use App\Extensions\ErsUserProvider;
use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\Auth\UserProvider;
class ErsAuthServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
$this->app['auth']->extend('ers',function($app)
{
$model = $app['config']['auth.model'];
return new ErsUserProvider($app['hash'], $model);
});
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}
<?php
namespace App\Providers;
use App\Extensions\ErsUserProvider;
use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\Auth\UserProvider;
class ErsAuthServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
$this->app['auth']->extend('ers',function($app)
{
$model = $app['config']['auth.model'];
return new ErsUserProvider($app['hash'], $model);
});
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}