Laravel使用自定义UserServiceProvider中的Eloquent模型

时间:2014-09-28 16:17:53

标签: php laravel eloquent

我是Laravel的新手,只是玩弄它并重新回到MVC。

我尝试将自己的用户身份验证提供程序(自定义密码哈希)作为在Laravel中实现UserProviderInterface的服务。

内部app / controllers / Account.php:

public function postCreate() {
    Auth::attempt(Input::all());
}

我的应用程序路由Auth ::尝试通过我的自定义提供程序类,并将表单中的Input :: all传递给retrieveByCredentials方法。

内部app / services / PasswordHash / PasswordHashUserProvider.php:

public function retrieveByCredentials(array $credentials) {
    // Why can't I do this?
    //Error: PasswordHash/User not found
    User::find($credentials['username']);

    dd($credentials);
}

此时我对如何从此服务类中访问我的用户雄辩模型感到迷茫。我尝试了名称空间,但没有运气。

1 个答案:

答案 0 :(得分:0)

服务提供程序上的引导方法使用服务容器注入依赖项。为此,您应该能够执行以下操作(不使用外墙,但我不经常使用外墙)。

class PasswordHashUserProvider extends ServiceProvider
{
    protected $user;

    public function boot(User $user)
    {
        $this->user = $user;
    }

}

然后,您可以通过$this->user

访问用户

来源:https://laravel.com/docs/master/providers#the-boot-method