2014-09-28 39 views
0

我是Laravel的新手,刚刚参与其中,并将我的头部重新转换为MVC。Laravel使用自定义UserServiceProvider的雄辩模型

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

内部应用程序/控制器/ Account.php:

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

我有我的应用程序的路由验证::通过我的自定义提供一流的尝试,并通过我输入::一切从形式到retrieveByCredentials方法。

内部应用程序/服务/ 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); 
} 

我就如何从该服务类中访问我的用户雄辩模式这一点上失去了。我尝试命名空间,但没有运气。

+0

你尝试'使用使用App \用户;'? – 2014-09-28 18:50:51

+0

是的,没有工作。我意识到我应该将一个空白用户模型传递给我的密码类,并调用它的方法来创建我的用户模型。我现在正在用用户名查询。 – kr094 2014-09-28 19:32:40

回答

0

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

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