2015-07-12 182 views
0

Im用戶需要通過單擊郵箱中的鏈接激活他們的賬戶來編輯我的laravel auth。 我的數據庫有一個額外的時間戳字段'activated_at'。如何驗證'activated_at'是否爲空。我發現以下規則自定義驗證::Laravel auth檢查字段是否爲空

if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) 
{ 
} 

但是,我應該如何添加一個規則來檢查一個值是否爲空?

回答

0

Laravel的用戶提供程序試圖通過搜索傳遞給驗證::嘗試()的用戶數據和數據之間的精確匹配加載用戶 - 見實施\照亮\身份驗證\ DatabaseUserProvider :: retrieveByCredentials()\ Illuminate \ Auth \ EloquentUserProvider :: retrieveByCredentials()取決於您使用的提供程序。因此不可能提供「where field not null」約束到Auth :: attempt()

你可以通過實現你自己的用戶提供者來解決這個問題,但我認爲這是不值得的。我建議在用戶模型中存儲is_active標誌。

+0

我只想考慮在if(auth){}中檢查activated_at,如果測試失敗Auth :: logout();它將數據庫字段保存在if語句中 –

+0

這是一種矯枉過正的行爲。您只需對用戶進行身份驗證即可立即註銷。在數據庫中存儲額外的標誌不會傷害到你。 –