เรียนรู้ Laravel 4.1 ( Auth )

laravel_Auth

บทความนี้เราจะเรียนรู้เกี่ยวกับการ Authentication โดยจะเรียนรู้การ Register แล้วก็เอา username / passsword สำหรับ Login เข้าสู่ระบบครับเป็นอย่างไรไปดูกันเลย

สร้างหน้า Form สำหรับ Register ก่อน

จากที่เราเรียนรู้การสร้าง View ไปแล้วก็ให้สร้างหน้าสำหรับ Register โดยมี input email และก็ pasword นะครับ และเพิ่มโค้ดสำหรับเรียกหน้า Form สำหรับ Register ครับแก้ไขที่ไฟล์ route.php ตามนี้เลย

Route::get('register', function() {
   return View::make('register');
));

 

ใครไม่รู้สร้างอย่างไรกลับไปดูที่

เมื่อสร้างเสร็จแล้วให้ไปแก้ไขไฟล์ route.php เพิ่มโค้ดตามด้านล่าง

Route::post('register', '[email protected]');

เป็นการบอกว่าเมื่อเราทำการส่งค่าจาก Form จะเข้าสู่ Route นี้ครับจะส่งค่าไปยังไฟล์ LoginController ที่มี method ( function ) ชื่อว่า register ครับต่อไปให้เราไปสร้างไฟล์ใหม่ชื่อว่า LoginController.php ใน folder controller ครับและใส่โค้ดตามด้านล่างครับ

Class LoginController extends BaseController {
	
	public function register()
	{
		print_r(Input::all());
	}
}

จากโค้ดด้านบนเราทำการ print_r ค่าที่มีการกรอก Input เข้ามา หลายคนอาจจะงงว่ามันมาไงไอ้เจ้า Input::all() มันคือ class ที่ทาง Laravel เตรียมไว้สำหรับจัดการเรื่องพวกค่า กรอกๆทั้งหลายจาก Form ครับ ใครงงอยากให้อธิบายเพิ่มเติมถามได้ใน comment เลยจ้า

สร็จ save  ลองเข้า Browser ไปหน้า form กรอกข้อมูลแล้วกดปุ่มส่ง เสร็จดูว่าระบบทำงานถูกต้องหรือไม่ หากทำงานถูกค่าก็จะถูกส่งออกมาให้ดูว่ามีอะไรบ้าง

เสร็จเราต้องการจะทำการ save ลงฐานข้อมูลโดยแก้ไข  code ดังนี้

Class LoginController extends BaseController {
	
	public function register()
	{
		$user = new User;
		$user->email = Input::get('email');
		$user->password = Hash::make(Input::get('password'));
		$user->address = Input::get('address');
		return $user->save();
	}
}

ตัว User เป็น model สำหรับจัดการเรื่องการดึงข้อมูล User ครับแล้วเราก็ปรับเปลี่ยนค่าต่างๆเพื่อทำการ save ครับส่วนตรง Hash ก็คล้ายๆกับตัว Class Input ครับทาง Laravel เตรียมให้เราสำหรับจัดการเรื่องการเข้ารหัสแบบต่างๆ

 การ Login

เขียน ไฟล์ route เขียนเพิ่มเติมจากอันเดิม

Route::get('login', function(){
	return View::make('login');
});	

คราวนี้เราเพิ่ม route ใหม่สำหรับการเรียกหน้า Login form ครับ เมื่อทำหน้าสำหรับกรอกแล้วเราก็ต้องสร้าง route สำหรับการรับค่าเหมือนเดิมคล้ายๆกับตอนเราทำหน้า register ครับ

Route::post('login', '[email protected]');

เราจะส่งค่าที่ user กรอกไปให้ function สำหรับการเช็คค่าว่าถูกต้องไหมอย่างไร กลับไปที่ ไฟล์ LoginController.php

สร้างมาอีก function ในไฟล์ LoginController.php  ตามนี้ครับ

public function login() 
{
	$credential = Input::only('email','password');
	if(Auth::attemp($credential)) {
		echo 'login success';
	} else {
		echo 'Invalid credential';
	}
}

ตรง Input::only คือการบอกว่าเราจะเอาค่าแค่ 2 field นี้เท่านั้นในหน้าตอนกรอก อาจจะมีหลาย Input แต่เราไม่สนใจเราต้องการแค่สองอันนี้ครับส่วน Auth::attemp ก็เหมือนเดิมทาง Laravel มี class สำหรับจัดการเรื่องการเช็คข้อมูลว่ามีอยู่ในระบบหรือยัง อะไรพวกนี้ให้เราแล้ว ถ้าหากงงว่าแล้วไอ้ attemp มันมายังไง อันนี้เราต้องไปอ่านดูในเอกสารในเว็บหรือเราเรียกว่า API Document ครับ

ถ้าเรากรอกสำหรับไม่มีอะไรพลาดเราก็จะเห็นข้อความว่า login success ครับ

การ Logout

สร้าง route สำหรับ logout

Route::get('logout', '[email protected]');

แล้วก็ไปเพิ่ม function จากไฟล์เดิม LoginController.php ครับ

public function logout() {
	Auth::logout();
	return Redirect::to('login');
}

 การดึงข้อมูล User ที่ Login

Route::get('getuser', function() {
	print_r(Auth::user()->id);
});

 สรุป

ในบทนี้เราได้รู้แล้วว่าวิธีทำ Login นั้นไม่ได้ยากอย่างที่คิด หากมีข้อสงสัยอะไรก็สามารถสอบถามใน comment ได้เลยครับ

Credit

พอดีผมได้ไปศึกษาจากคลิปนี้ https://www.youtube.com/user/laraveltut สามารถเข้าไปติดตามหรือเรียนจากคลิปได้ครับ หรือสามารถติดตามที่เว็บหลักของเขาครับทางนี้เลย http://laraveltut.com/

แล้วมาเขียนอธิบายเพิ่มเติมครับจึงอยากแชร์ต่อไว้โดยผมจะพยายามเขียนอธิบายคนที่ไม่เคยใช้หรือไม่เข้าใจมาก่อน หากมีคำถามใดๆสามารถเขียน comment ถามไว้ได้เลยครับถ้าผมว่าจะตอบทันที

 

 

 

 

ถ้าคุณชอบบทความในเว็บนี้ และอยากสนับสนุนเรา เพียงแค่คุณสมัครรับข่าวสารด้านล่างจะได้รับสิทธิ์พิเศษก่อนใคร เราสัญญาว่าจะส่งบทความที่เป็นประโยชน์ต่อคุณอย่างแน่นอนครับ

Loading

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Message us

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ปฎิเสธทั้งหมด
Manage Consent Preferences
  • คุกกี้ที่จำเป็น
    Always Active

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้

  • คุกกี้ที่จำเป็น

    คุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้

บันทึก