2014-09-28 63 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