2017-07-23 98 views
0

我創建了一個名爲ADMIN_USER的新表,其中包含字段USERNAME和PASSWORD進行身份驗證,但是當我嘗試執行登錄時,Hash :: check如預期的那樣返回true,但是驗證::嘗試返回false。Laravel 5.3 Auth :: login和Auth :: loginUsingId undefined

然後我試圖記住哈希之前登錄的用戶::檢查或驗證::嘗試與錯誤的PHP回覆:呼籲未定義功能應用\ HTTP \ \控制器驗證\ loginUsingId()

而Hash :: check下的Auth:login不記得任何東西。

這裏是在LoginController中我的身份驗證方法:

public function authenticate(Request $request) 
{ 
    $data = $request->all(); 
    $user = new User(); 
    $user = $user->where('USERNAME' , $data['inputUsername'])->first(); 
    Log::info($user->PASSWORD); 
    Log::info($data['inputPassword']); 

    Auth:loginUsingId($user->id); 

    /* 
    if(Auth::attempt(array('USERNAME' => $data['inputUsername'], 'PASSWORD' => $data['inputPassword']))){ 
     return redirect($this->home); 
    }else{ 
     return redirect($this->index); 
    } 
    */ 

    if(Hash::check($data['inputPassword'], $user->PASSWORD)){ 
     Auth::loginUsingId($user->id); 
     return redirect($this->home); 
    }else{ 
     return redirect($this->index); 
    } 

} 
+0

您是否已經遷移了Laravel隨附的遷移?你的數據庫目前有哪些表? – Dom

+0

系統是新創建的,我手動創建了ADMIN_USER表,並在User類中添加了$ table屬性,將$ fillable數組更改爲相應的列名稱 –

+0

我是否需要更改遷移並執行一些php命令? –

回答

0

我解決了我的問題,在我的數據庫中將PASSWORD更改爲密碼和ID。

0

Laravel預配置有存儲您的會話信息,用戶,鹽漬密碼等所以沒有必要創建自己的用戶和身份驗證表表。您可以在documentation中閱讀更多關於此的內容。

除非您修改身份驗證類,否則Laravel配置將不知道如何與ADMIN_USERS通信。

查看您的應用程序的數據庫/ migrations文件夾,您應該找到一個timestamp_create_users_table.php文件,其中包含用於創建具有id,名稱,電子郵件,密碼,令牌和時間戳的用戶表的遷移。

如果你沒有看到,然後運行:

php artisan make:auth 

一旦你在你的遷移文件夾遷移文件,然後只需運行。

php artisan migrate 

一旦運行,檢查您的數據庫,你應該看到一個用戶表。我很確定這會解決您的身份驗證問題。

我建議你運行一些在laracasts上可用的免費課程。它應該可以幫助你快速加速。

希望這會有所幫助。

+0

我通過執行遷移並將PASSWORD列更改爲密碼來解決Auth :: attempt返回false問題,現在Auth :: attempt會按預期返回true,但我無法使用Auth :: user() –

+0

檢索用戶數據您是否添加了使用Auth;到您試圖通過訪問數據的控制器?你是否也登錄或訪問該頁面作爲客人?運行dd(Auth :: check());去檢查。 – Dom

+0

我想出了另一個出路,謝謝你的回覆。 –