سلام خدمت همه دوستان.
به خاطر پروژه ای که داریم مجبورم تا به جای ثبت ایمیل، فقط نام کاربری کاربر رو ثبت کنم.
برای این کار خب توی RegisterController
تو جاهایی که ایمیل میگرفت رو درست کردم و تغییرش دادم به نام کاربری و ثبت نام هم بدون هیچ مشکلی انجام میشه، اما بعد از ثبت نام وقتی که میخوام لاگین کنم، این ارور رو توی blade لاراول به نشون میده که اطلاعات وارد شده با اطلاعات ما سازگار نیست، بعد از اینکه یکم سرچ کردم فهمیدم که باید متد username
از تریت AuthenticatesUsers
در LoginController
رو به شکل زیر بازنویسی کنم و username رو توش قرار بدم :
public function username()
{
return 'username';
}
و input مربوط به ایمیل هم نامش رو به username تغییر دادم، اما هرکار میکنم نمیتونم لاگین کنم و هی میگه اطلاعات وارد شده سازگار نیست در صورتی که چندین و چندبار تکرار کردم و مقادیر رو سنجیدم و از اول کاربر ساختم اما نشد.
ممنون میشم اگر کسی میدونه مشکل کجاست راهنمایی کنه
به روز رسانی
class LoginController extends Controller
{
use AuthenticatesUsers, TwoFactorAuth;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
return 'username';
}
protected function authenticated(Request $request, $user)
{
return $this->loggedin($request, $user);
}
public function logout(Request $request)
{
Auth::logout();
return redirect('/');
}
}
سلام
چند وقت پیش این مشکل هم برای من پیش امد
این مشکل برای من به خاطر اینبود که پسورد من دو بار hash میشد و موقعی که از attempt استفاده میکردم تنها یکی از اون مرحله هش شده با پسورد وارد شده مقایسه میشد و با هم سازگار نبودن .
دو بار hash شدن پسورد هم به خاطر این بود که من یه بار از مدل user و یه بار هم مودقع ایجاد user در کنترلر این کارو میکردم
سلام کاری برای انجام نمونده شاید شاید نام کاربری رو اشتباه وارد میکنید یا رمز عبورتان اشتباه تایپ میشود.
@hosseinshirinegad98
همونطور که گفتم تو متن بار ها و بار ها تست کردم، دیتابیس کنارم بازه دیگه :)))
از لحاظ اینکه اشتباه وارد میکنم امکان نداره 100 درصد مطمئنم که درسته، نمیدونم واقعا کجاش مشکل داره که لاگین نمیکنه
سلام.رمز عبور رو باید bcrypt کنید حتما وگرنه امکان لاگین وجود نداره. از تابع attempt استفاده کنید برای لاگین کردن.
@mohammadeng3731
یعنی موقع ثبت نام ؟!
خب تو ثبت نام خود لاراول داره از Hash::make استفاده میکنه که !
یه کاری انجام بدین قدم به قدم با dd از برنامه در متد لاگین خروجی بگیرین ببین به متد لاگین چه مقادیری ارسال میشه.
@hosseinshirinegad98
دقیقا همین کارم کردم، و دقیقا همین 2 تا فلید نام کاربری و رمز عبور رو به شکل زیر بهم بر میگردونه :
array:3 [▼
"_token" => "v2lKcL3A1EUfsTKLpfKIuKMsldlT4eWkdSkTaDwQ"
"username" => "pooriya_mtn"
"password" => "123456789"
]
خوب ادامه بدین همین طور دنبال کنین بعد ولیدیت کردن هم خروجی بگیرین قبل و بعد متد attempt هم خروجی بگیرین
@hosseinshirinegad98
تعریف کردم از قبل، واقعا دیگه نمیدونم مشکل از چی میتونه باشه هر جا هم تونستم پرسیدم کسی نمیدونه 😑😑
سلام وقت بخیر
ظاهرا شما کارا رو دارید درست انجام میدید ولی ممکنه جایی خطای سینتکسی داشته باشید. حتما از تابع attemp برای ورود dd بگیرید و ببینید چه مقداری را برمیگرداند. دوس داشتی لینک زیر رو هم یه مطالعه بکن شاید بدردت بخوره
https://7learn.com/tutorials/laravel-validation-and-logon-by-email-or-usernam-in-a-field
من تونستم راحت با username لاگین کنم فقط در LoginController متد username رو باز نویسی کردم و ویوهای login و register رو با فیلد جدید ادیت کردم RegisterCnotroller رو هم مثل خودت ادیت کردم و الان با موفقیت رجیستر و لاگین میکنه . مشکل خاصی نباید تو برنامت باشه.
@vah.id
درود
از تابع attemptLogin
خروجی گرفتم دقیقا درست بود و مقدار username و password رو بر میگردوند.
حتی از تابع credentials
که توی همین attemptLogin
قرار داره هم خروجی گرفتم و باز هم درست بود و مقادیر رو بر میگردوند
@hosseinshirinegad98
چی بگم والا، 2 روزه اسیر کرده منو هرکیم میگیم مثل شما درست کار میکنه واسش، نمیدونم دیگه کجا میتونه باشه مشکل
@Waltun
بنظرم از قسمت لاگین هم کدتون رو بزارید...ممکنه جایی اشتباه شده باشه
اینو داشته باش که همیشه دقیقا اونموقعی که فک میکنی هیچ خطایی نداری یه خطایی وجود داره خخخخ (تجربه)
این رو برای چی به این صورت نوشتین؟
protected function authenticated(Request $request, $user)
{
return $this->loggedin($request, $user);
}
@hosseinshirinegad98
این تابع authenticated
دقیقا بعد از ورود اجرا میشه که خب الان من ورودم انجام نمیشه که بخواد اجرا بشه
ولی در کل احراز هویت دو مرحله ای کاربر رو چک میکنه که ببینه فعال هست یا نه، به ورود اصلا کاری نداره بخواد مشکل ایجاد کنه، چون حتی کامنتش کردم و تست کردم باز هم نشد
@Waltun
لینکی که براتون فرستادم رو مطالعه کنید شاید کارتون راه افتاد
البته شما احراز هویت دو مرحله ای رو هم استفاده میکنید ممکنه توی اون هم باید فیلد رو تغییر بدین
تو LoginController این تریتو هم حذفش کن بعد تست کن.
TwoFactorAuth
اینو هم کامنت کن.
return $this->loggedin($request, $user);
و اگر مایلی پروژتو تو تلگرام بدون پوشه vendor و node_module زیپ کن برام به ای ایدی بفرست
@hossein_shirinegad
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟