راکت
حل
21 پاسخ

تغییر فیلد ایمیل به نام کاربری در لاراول

سلام خدمت همه دوستان.
به خاطر پروژه ای که داریم مجبورم تا به جای ثبت ایمیل، فقط نام کاربری کاربر رو ثبت کنم.
برای این کار خب توی 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('/');
    }
}

ثبت پرسش جدید
MB
MB
تخصص :برنامه نویس
@mohammadbashiri8683s5 سال پیشمطرح شد
0

سلام
چند وقت پیش این مشکل هم برای من پیش امد
این مشکل برای من به خاطر اینبود که پسورد من دو بار hash میشد و موقعی که از attempt استفاده میکردم تنها یکی از اون مرحله هش شده با پسورد وارد شده مقایسه میشد و با هم سازگار نبودن .
دو بار hash شدن پسورد هم به خاطر این بود که من یه بار از مدل user و یه بار هم مودقع ایجاد user در کنترلر این کارو میکردم


حسین شیری نژاد
حسین شیری نژاد
تخصص :programmer
@hosseinshirinegad985 سال پیشمطرح شد
0

سلام کاری برای انجام نمونده شاید شاید نام کاربری رو اشتباه وارد میکنید یا رمز عبورتان اشتباه تایپ میشود.


پوریا مستعان
پوریا مستعان
تخصص :Full-Stack Developer
@pooriya.mostaan5 سال پیشمطرح شد
0

@hosseinshirinegad98
همونطور که گفتم تو متن بار ها و بار ها تست کردم، دیتابیس کنارم بازه دیگه :)))
از لحاظ اینکه اشتباه وارد میکنم امکان نداره 100 درصد مطمئنم که درسته، نمیدونم واقعا کجاش مشکل داره که لاگین نمیکنه


محمد امیری
محمد امیری
تخصص :backend coder
@mohammadeng37315 سال پیشمطرح شد
0

سلام.رمز عبور رو باید bcrypt کنید حتما وگرنه امکان لاگین وجود نداره. از تابع attempt استفاده کنید برای لاگین کردن.


پوریا مستعان
پوریا مستعان
تخصص :Full-Stack Developer
@pooriya.mostaan5 سال پیشمطرح شد
0

@mohammadeng3731
یعنی موقع ثبت نام ؟!
خب تو ثبت نام خود لاراول داره از Hash::make استفاده میکنه که !


حسین شیری نژاد
حسین شیری نژاد
تخصص :programmer
@hosseinshirinegad985 سال پیشمطرح شد
0

یه کاری انجام بدین قدم به قدم با dd از برنامه در متد لاگین خروجی بگیرین ببین به متد لاگین چه مقادیری ارسال میشه.


پوریا مستعان
پوریا مستعان
تخصص :Full-Stack Developer
@pooriya.mostaan5 سال پیشمطرح شد
0

@hosseinshirinegad98
دقیقا همین کارم کردم، و دقیقا همین 2 تا فلید نام کاربری و رمز عبور رو به شکل زیر بهم بر میگردونه :

array:3 [▼
   "_token" => "v2lKcL3A1EUfsTKLpfKIuKMsldlT4eWkdSkTaDwQ"
   "username" => "pooriya_mtn"
   "password" => "123456789"
 ]

حسین شیری نژاد
حسین شیری نژاد
تخصص :programmer
@hosseinshirinegad985 سال پیشمطرح شد
0

خوب ادامه بدین همین طور دنبال کنین بعد ولیدیت کردن هم خروجی بگیرین قبل و بعد متد attempt هم خروجی بگیرین


حسین شیری نژاد
حسین شیری نژاد
تخصص :programmer
@hosseinshirinegad985 سال پیشمطرح شد
0

در مدل User هم فیلد جدیدو معرفی باید کرد اگر کردی که هیچ نکردی تعریف کن.


پوریا مستعان
پوریا مستعان
تخصص :Full-Stack Developer
@pooriya.mostaan5 سال پیشمطرح شد
0

@hosseinshirinegad98
تعریف کردم از قبل، واقعا دیگه نمیدونم مشکل از چی میتونه باشه هر جا هم تونستم پرسیدم کسی نمیدونه 😑😑


وحید حسنی
وحید حسنی
تخصص :برنامه نویس وب
@vah.id5 سال پیشمطرح شد
0

سلام وقت بخیر
ظاهرا شما کارا رو دارید درست انجام میدید ولی ممکنه جایی خطای سینتکسی داشته باشید. حتما از تابع attemp برای ورود dd بگیرید و ببینید چه مقداری را برمیگرداند. دوس داشتی لینک زیر رو هم یه مطالعه بکن شاید بدردت بخوره
https://7learn.com/tutorials/laravel-validation-and-logon-by-email-or-usernam-in-a-field


حسین شیری نژاد
حسین شیری نژاد
تخصص :programmer
@hosseinshirinegad985 سال پیشمطرح شد
0

من تونستم راحت با username لاگین کنم فقط در LoginController متد username رو باز نویسی کردم و ویوهای login و register رو با فیلد جدید ادیت کردم RegisterCnotroller رو هم مثل خودت ادیت کردم و الان با موفقیت رجیستر و لاگین میکنه . مشکل خاصی نباید تو برنامت باشه.


پوریا مستعان
پوریا مستعان
تخصص :Full-Stack Developer
@pooriya.mostaan5 سال پیشمطرح شد
0

@vah.id
درود
از تابع attemptLogin خروجی گرفتم دقیقا درست بود و مقدار username و password رو بر میگردوند.
حتی از تابع credentials که توی همین attemptLogin قرار داره هم خروجی گرفتم و باز هم درست بود و مقادیر رو بر میگردوند


پوریا مستعان
پوریا مستعان
تخصص :Full-Stack Developer
@pooriya.mostaan5 سال پیشمطرح شد
0

@hosseinshirinegad98
چی بگم والا، 2 روزه اسیر کرده منو هرکیم میگیم مثل شما درست کار میکنه واسش، نمیدونم دیگه کجا میتونه باشه مشکل


وحید حسنی
وحید حسنی
تخصص :برنامه نویس وب
@vah.id5 سال پیشمطرح شد
1

@Waltun
بنظرم از قسمت لاگین هم کدتون رو بزارید...ممکنه جایی اشتباه شده باشه
اینو داشته باش که همیشه دقیقا اونموقعی که فک میکنی هیچ خطایی نداری یه خطایی وجود داره خخخخ (تجربه)


پوریا مستعان
پوریا مستعان
تخصص :Full-Stack Developer
@pooriya.mostaan5 سال پیشمطرح شد
0

@vah.id
گفت و گو ویرایش شد


حسین شیری نژاد
حسین شیری نژاد
تخصص :programmer
@hosseinshirinegad985 سال پیشمطرح شد
0

این رو برای چی به این صورت نوشتین؟

protected function authenticated(Request $request, $user)
    {
        return $this->loggedin($request, $user);
    }

پوریا مستعان
پوریا مستعان
تخصص :Full-Stack Developer
@pooriya.mostaan5 سال پیشمطرح شد
0

@hosseinshirinegad98
این تابع authenticated دقیقا بعد از ورود اجرا میشه که خب الان من ورودم انجام نمیشه که بخواد اجرا بشه
ولی در کل احراز هویت دو مرحله ای کاربر رو چک میکنه که ببینه فعال هست یا نه، به ورود اصلا کاری نداره بخواد مشکل ایجاد کنه، چون حتی کامنتش کردم و تست کردم باز هم نشد


حسین شیری نژاد
حسین شیری نژاد
تخصص :programmer
@hosseinshirinegad985 سال پیشمطرح شد
0

احتمال 99 درصد کدهای احراز هویت دو مرحله ای داره مشکل ایجاد میکنه البته حدسم اینه.


وحید حسنی
وحید حسنی
تخصص :برنامه نویس وب
@vah.id5 سال پیشمطرح شد
0

@Waltun
لینکی که براتون فرستادم رو مطالعه کنید شاید کارتون راه افتاد
البته شما احراز هویت دو مرحله ای رو هم استفاده میکنید ممکنه توی اون هم باید فیلد رو تغییر بدین


حسین شیری نژاد
حسین شیری نژاد
تخصص :programmer
@hosseinshirinegad985 سال پیشمطرح شد
0

تو LoginController این تریتو هم حذفش کن بعد تست کن.
TwoFactorAuth
اینو هم کامنت کن.

return $this->loggedin($request, $user);

و اگر مایلی پروژتو تو تلگرام بدون پوشه vendor و node_module زیپ کن برام به ای ایدی بفرست

@hossein_shirinegad

صفحه 1 از 2

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام