ทำระบบ Authentication อย่างง่ายด้วย Laravel 5

การทำระบบ Authentication หรือระบบที่ต้อง Login เข้าใช้งาน สำหรับ Laravel นั้นจะมีเครื่องมือที่ช่วยให้เราสร้าง ระบบ Register , Login , Logout ,Permission และ Forgot Password เป็นโครงสร้างอย่างง่ายให้เบื้องต้น ซึ่งขั้นตอนไม่ยุ่งยาก ทั้งยังสะดวกรวดเร็วประหยัดเวลาไปได้มาก โดยวิธีการมีดังนี้ครับ

วิธีติดตั้ง

เริ่มต้นให้เราเปิด Terminal เพื่อรันคำสั่ง php artisan ดังนี้ครับ

จากนั้นสร้างฐานข้อมูลให้เสร็จเรียนร้อย เพื่อที่จะรันคำสั่ง database migrations ดังต่อไปนี้

ส่วนใครที่เจอ “ข้อผิดพลาด Specified key was too long” ให้ลบตาราง users , password_resets และลบแถวที่มีคำสั่งสร้างตาราง users และ password_resets ออกไปในตาราง  migrations จากนั้นให้แก้ไขตามลิงค์นี้

Laravel 5.5 แก้ข้อผิดพลาด Specified key was too long

จากนั้นลองสั่ง “php artisan migrate” ตามด้านบนอีกครั้งนึง

เมื่อเสร็จเรียบร้อยแล้วลองเข้า URL : http://your-app.dev/register จะเจอหน้าลงทะเบียนลองกรอกข้อมูล ถ้า Login เข้าระบบเรียบร้อย ก็เป็นอันใช้งานเบื้องต้นได้ครับ

วิธีใช้งาน

ส่วนตัวผมใช้วิธีเลียนแบบโครงสร้างที่ Laravel มันสร้างให้มาแต่ต้นเลย เอามาเป็นต้นแบบ เมื่อเราเข้าไปดูใน /routes/web.php จะมีการเพิ่ม Code และสร้าง Controller ที่ชื่อ “HomeController” มาให้เรา

จากด้านบน จะเป็นหน้าที่เราจะพบหลังจาก Login มาแล้ว /home ซึ่งเราสามารถเปลี่ยน Path หลังจาก Login แล้วได้

ตัวอย่างเช่น จะเปลี่ยนให้เมื่อ Login แล้วไปยัง /auth/dashboard วิธีการให้เข้าไปเปลี่ยนค่าตามไฟล์และตัวแปรดังต่อไปนี้

เปลี่ยน Path เริ่มต้นหลังจาก Login

เข้าไปที่ไฟล์ /app/Http/Controllers/Auth/LoginController.php เปลี่ยนค่าดังนี้

เข้าไปที่ไฟล์ /vendor/laravel/framework/src/Illuminate/Foundation/Auth/RedirectsUsers.php เปลี่ยนค่าดังนี้

เข้าไปที่ไฟล์ /routes/web.php เพิ่ม Path /auth/dashboard และเรียก Auth\DashboardController@index ดังนี้

วิธีตรวจสอบสิทธิ์การเข้าสู่ระบบใน Controller

ให้สร้าง Controller DashboardController โดยตั้งชื่อ Namespace เป็น Auth ให้เข้าไปที่โฟลเดอร์ /app/Http/Controllers/Auth ซึ่ง Laravel ได้สร้างให้เราอยู่แล้วตอนเราทำในขั้นตอนแรก จากนั้นสร้างไฟล์ DashboardController.php ดังต่อนี้

สังเกตจะมีการเรียก $this->middleware(‘auth’); ที่ Constructor เพื่อตรวจสอบว่า Login หรือยัง เราลองทดสอบโดยการเรียก http://your-app.dev/auth/dashboard ถ้าไม่ได้ Login ระบบจะ Redirect ไปหน้า Login ก่อนเข้าหน้านี้

วิธีตรวจสอบสิทธิ์การเข้าสู่ระบบด้วย Middleware Groups

หรือเราจะเปลี่ยนไปตรวจสอบสิทธิ์โดยใช้ Middleware Groups ไปวางไว้ที่ Route เลย โดยเข้าไปที่ไฟล์ /routes/web.php แล้ว ยกตัวอย่างเช่นจะต้อง Login เมื่อต้องการเข้า URL http://your-app.dev/auth/dashboard และ http://your-app.dev/auth/password โดยเราจะใส่ Path ไว้ใน Middleware Groups ดัง Code ด้านล่างนี้

จริงๆแล้วสามารถตรวจสอบสิทธิ์ได้อีกหลายแบบ แต่ขอเขียนไว้เท่านี้ซึ่งน้ำไปใช่งานได้เพียงพอแล้ว และหากสนใจก็สามารถศึกษาเพิ่มเติมได้ที่ Document ของ Laravel ได้โดยตรงที่ https://laravel.com/

ส่วนบทความนี้ขอจบไว้เพียงเท่านี้ก่อนนะครับ

(ตั้ม) ศิริชัย ธีรภัทรสกุล เป็นเว็บโปรแกรมเมอร์, บล็อกเกอร์, และเจ้าของกิจการ ชอบถ่ายรูป อ่านหนังสือ และออกกำลังกาย “จงมีความกล้าที่จะลงมือทำ และอยู่กับปัจจุบัน ณ ขณะ (จงโฟกัส)"

Post a Comment