سلام
من از کد زیر برای احراز هویت استفاده میکنم
public function login(Request $request) {
if (Auth::attempt(['phone_number' => $request->phone_number, 'password' => $request->password])){
return 'logged in';
}else return 'login failed';
}
اما در هر صورت login failed رو در خروجی دارم!
از کنترلر خود لاراول نمیخوام استفاده کنم و متد و توی یوزرکنترل قرار دادم
با یوزرنیم و ایمیل هم که تست میکنم همین مشکل هست
در واقع متد attempt همیشه false رو برمیگردونه
توی مدل یوزر از کلاس Illuminate\Foundation\Auth\User ارث بردم و مشکل برطرف شد.
شاید برای سایر دوستان هم پیش بیاد :)
فایل زیر رو باز کنید:
vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php
داخلش یه متد به نام ()username هست. به حالت زیر تغییرش بدید و دوباره امتحان کنید.
public function username()
{
return 'phone_number';
}
همچنین داخل متد ()validateLogin هم چک میشه که آرگومان اول یه رشته باشه٬ که برای شماره تلفن یه مقدار عددی باید باشه.
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required|string',
'password' => 'required|string',
]);
}
required|string اولی رو میتونید به required|integer یا required خالی تغییر بدید.
ممنونم اما مشکل رفع نشد!
حتی بصورت پیشفرض با یوزرنیم هم تست میکنم همون خروجی رو دارم
if (Auth::validate(['username' => 'mohammad' , 'password' => '654321'])){
return 'logged in';
}else return 'login failed';
این کد هم فقط خروجی login failed رو داره
من برای تست اسم key پسورد رو تغییر دادم، که ببینم چه کوئری داره میزنه نتیجه به این شکل هست:
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'passsword' in 'where clause' (SQL: select * from `users` where `username` = mohammad and `passsword` = 654321 limit 1)"
اگه دقت کنید مقدار نام کاربری mohammad و پسورد 654321 داخل کتیشن نیست، و کلا در حالت عادی هم نمیشه اینجوری کوئری گرفت و باید داخل کوتیشن یا دبل کوتیشن باشه
@bahadori.embi
احتمالا باید متد credentials رو در LoginController بازنویسی کنید.
لینک های زیر رو چک کنید.
https://medium.com/@jagadeshanh/laravel-5-4-login-with-email-or-phone-cac9a3855cda
https://stackoverflow.com/questions/47537191/laravel-login-with-username-email-or-phone
توی مدل یوزر از کلاس Illuminate\Foundation\Auth\User ارث بردم و مشکل برطرف شد.
شاید برای سایر دوستان هم پیش بیاد :)
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟