2015-08-13 71 views
1

我嘗試使用以下規則在我的代碼按文件,但它不工作:Laravel 5.1唯一的電子郵件

/** 
* Get the validation rules that apply to the request. 
* 
* @return array 
*/ 
public function rules() 
{ 
    return [ 
     'first_name'  => 'required', 
     'last_name'   => 'required', 
     'email'    => 'required|unique:users,email,:email', 
    ]; 
} 

它回來了The email has already been taken.

我想說如果用戶電子郵件不是唯一的,那麼拋出一個錯誤,除了當前的用戶ID。

我該如何做到這一點?

+0

值得注意的是,它可以被視爲一個安全漏洞,強制用戶擁有唯一的電子郵件地址。這是因爲如果攻擊者想知道某個電子郵件地址是否已經在系統上註冊,他可以簡單地通過嘗試將他的地址更改爲目標地址來找到。利用自動化工具和電子郵件地址數據庫(即垃圾郵件列表或其他網站黑客攻擊),攻擊者可以很快繪製出用戶羣的良好配置文件。這對你來說可能是也可能不是問題,但是可能會導致攻擊你的其他方式。 – Simba

回答

3

您需要爲獨特規則提供一個要忽略的ID。試試這個:

return [ 
    'first_name'  => 'required', 
    'last_name'   => 'required', 
    'email'    => 'required|unique:users,email,' . Auth::user()->id 
]; 

注:這裏假設你正在使用Laravel的驗證類。

+0

謝謝,但它不是當前登錄的用戶。這是管理員正在編輯的用戶。所以我想我可以使用請求代替Auth? – V4n1ll4

+0

@ V4n1ll4是的,這應該工作。 –

相關問題