keyboard_return  چسبون مقالات آموزشی لاگین با ایمیل و نام کاربری با یک فیلد در لاراول laravel
  1. لاگین با ایمیل و نام کاربری با یک فیلد در لاراول laravel

لاگین کردن با ایمیل یا نام کاربری در لاراول (در یک فیلد)

حتما سایت هایی رو دیدین که میشه تو قسمت نام کاربری هم user name بدین و هم email در صورتیکه با نام کاربری یا ایمیل ثبت نام کرده باشین می تونید لاگین کنید.

Laravel-Auth-With-Username-OR-Email

بطور پیش فرض لاراول به شما اجازه میده که تو هر فیلد تنها یک مقدار رو دریافت کنید (مثلا ایمیل) اما شما به راحتی می توانید این قابلیت رو تغییر بدید.

تصور کنید شما یک فیلد username در جدول user دارید و می خواهید با بررسی مقدار این فیلد کاربر را احراز هویت کنید. شما از دو کادر username و password برای احراز هویت کاربر استفاده می کنید. چطور کاربر می تواند در کادر username هم نام کاربری خود را وارد کند و یا در صورت تمایل آدرس ایمیل خود را وارد کند؟ یعنی با یک فیلد دو مقدار نام کاربری و یا ایمیل دریافت کند.

خب مراحل زیر را دنبال کنید:

به مسیر app/Http/Auth رفته و فایل LoginController.php را باز کرده و متد ()login را مطابق زیر ویرایش کنید:

public function login(Request $request) {
	$this->validate($request, [ 
		'login' => 'required',
		'password' => 'required',
		]);

	$login_type = filter_var($request->input('login'), FILTER_VALIDATE_EMAIL ) ? 'email' : 'username';

	$request->merge([ $login_type => $request->input('login') ]);

	if (Auth::attempt($request->only($login_type, 'password'))) { 
		return redirect()->intended($this->redirectPath());
	}
	return redirect()->back() ->withInput() 
						->withErrors([ 'login' => 'These credentials do not match our records.', ]);
}

 

خب اجازه بدین نگاه دقیق تری به کد بالا داشته باشیم:

$login_type = filter_var($request->input('login'), FILTER_VALIDATE_EMAIL ) ? 'email' : 'username';

خب همونطور که مشاهده می کنید با استفاده از تابع filter_var می توانید تشخیص دهید که ورودی کاربر یک آدرس ایمیل بوده و یا دنباله ای از رشته ها که به عنوان نام کاربری در نظر گرفته می شود.

$request->merge([ $login_type => $request->input('login') ]);

قطعه کد فوق نیز یک متغیر به آرایه request$ اضافه می کند. بصورت پیش فرض متغیر login در این آرایه وجود دارد اما ما به دو مقدار username و email نیاز داریم با استفاده از merge می توانید مقدار ورودی کاربر را در متغیر login_type قرار دهید. در صورتیکه ورودی کاربر از نوع ایمیل باشه، مقدار ورودی به متغیر login_type که بیانگر ایمیل می باشد اضافه میشه.

if (Auth::attempt($request->only($login_type, 'password'))) {
        return redirect()->intended($this->redirectPath());
}

در انتها نیز مقادیر وارد شده را بررسی می کنید. مقدار ورودی کاربر در متغیر login_type ذخیره شده که با بررسی این مقدار و متغیر password می توانید کاربران خود را احراز هویت کنید.

امیدوارم از این آموزش خوشتون اومده باشه.

چسبون مرجع برنامه نویسی و وب.

لاگین با ایمیل و نام کاربری با یک فیلد در لاراول laravel - 4.2 از 5 بر اساس 150 رای

امتیاز کاربران

لاگین با ایمیل و نام کاربری با یک فیلد در لاراول laravel
دیدگاه‌ها
علیرضا علیرضا 7 سال پیش
ممنون از شما بسیار بسیار کاربردی بود

2024 © Copyright کليه حقوق مادی و معنوی براي چسبون محفوظ است و هرگونه کپی برداری پیگرد قانونی دارد.