![](/img/trans.png)
[英]I want to login with username,email id and phone number in wordpress
[英]I want to update login with username or email in laravel
我已經更新了laravel default make:Auth以使用用戶名和電子郵件登錄。 我只是在其中有覆蓋用戶名功能
loginController.php可以:
public function username()
{
$loginType = request()->input('username');
$this->username = filter_var($loginType , FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
request()->merge([$this->username => $loginType]);
$this->property_exists($this, 'username') ? $this->username : 'email';
}
但出現錯誤:
Method [property_exists] does not exist on [App\Http\Controllers\Auth\LoginController].
property_exists
是php函數,而不是某些類中的方法。 因此,要改善此錯誤,只需重寫代碼:
public function username()
{
$loginType = request()->input('username');
$this->username = filter_var($loginType , FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
request()->merge([$this->username => $loginType]);
property_exists($this, 'username') ? $this->username : 'email';
}
property_exists —檢查對象或類是否具有屬性
bool property_exists(混合$ class,字符串$ property)
public function username()
{
$loginType = request()->input('username');
$this->username = filter_var($loginType , FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
request()->merge([$this->username => $loginType]);
property_exists($this, 'username') ? $this->username : 'email';
}
LoginController中的username()
方法引用請求發送的用戶名字段名稱 。 在您的情況下,我可以想象該字段名稱是相同的,但是發生的變化是您是否使用該字段查找電子郵件或用戶名。 在這種情況下,您應該能夠通過覆蓋LoginController中的credentials
方法來“欺騙”用戶提供者(而不是覆蓋username
功能):
protected function credentials(Request $request)
{
$v = \Validator::make($request->only($this->username()), [
$this->username() => "email"
]);
if ($v->passes()) {
return [
"email" => $request->input($this->username()),
"password" => $request->input("password")
];
} else {
return [
"username" => $request->input($this->username()),
"password" => $request->input("password")
];
}
}
這將被傳遞給用戶提供其要么被選擇用戶email
列或由username
取決於什么傳遞列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.