我使用了config::set('auth.model','App\Fblogin')
并获取了config::get('auth.model');
它似乎更新了价值,但是当我尝试Auth::logInUsingId()
时,它似乎还在使用默认{{} 1}}。那么我该怎么做才能使用我的控制器上的App\User
?
答案 0 :(得分:6)
如果您使用的是Laravel 5.1.11或更高版本,请使用:
auth()->getProvider()->setModel(App\Fblogin::class);
如果你不能/不会升级,恐怕没有简单的方法可以达到这个目的。
通过EloquentUserProvider
解决模型。使用的模型类在构造函数中设置,在运行时无法更改,因为属性为protected
。
你可以扩展EloquentUserProvider
,也可以作弊并设置它:
function set_auth_model($model) {
$closure = (function ($model) { $this->model = $model; });
$closure = $closure->bindTo(Auth::getProvider());
$closure($model);
}
set_auth_model(App\Fblogin::class);
但真的......只是升级。
答案 1 :(得分:1)
这可能是可能的,但您必须尝试这一点。您可以设置自己的Auth驱动程序,它只是扩展了默认的laravel auth驱动程序,但稍微修改了一下。例如,您可以通过提供商执行此操作。在提供商的启动方法中,您要说:
false
请注意,我们不再通过构造函数传递模型。我们将以不同的方式处理。您的MyUserProvider类扩展了EloquentUserProvider。我们将createModel方法覆盖到我们自己的版本,而不是使用构造的模型名称,而是在运行时获取模型名称。
$this->app['auth']->extend('my-auth', function ($app) {
return new Guard(
new MyUserProvider($app['hash']),
$app->make('session.store')
);
});
我还没有尝试过看看它是否有效,但你可以使用这种方法让它工作。