Site icon PlusMagi's Blog By Pitt Phunsanit

Laravel: login แบบมีเงื่อนไข

Laravel สร้างระบบ login ได้โดยทำตามคู่มือ Authentication หรือตาม ติดตั้ง laravel ลั๊ลลาเวล และ สร้างระบบ login ใน laravel 5

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

การแก้ไขให้ตรวจสอบเพิ่มในการ login เข้าระบบทำได้โดย

  1. เพิ่ม column active ในตาราง users โดย
    ALTER TABLE `users` ADD `active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '0 inactive, 1 active' AFTER `id`;
  2. เปิดไฟล์ \app\Http\Controllers\Auth\AuthController.php แก้ตามตัวอย่าง
    ...
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Auth;
    …
    
        /* redirect after login */
        protected $redirectPath = 'home';
    
        /* custom login condition */
        protected function getCredentials(Request $request)
        {
            $crendentials = $request->only($this->loginUsername(), 'password');
            $crendentials['active'] = 1;
            return $crendentials;
        }
    
        /* custom register process */
        public function postRegister(Request $request)
        {
            $validator = $this->validator($request->all());
    
            if ($validator->fails()) {
                $this->throwValidationException(
                    $request, $validator
                );
            }
    
            Auth::login($this->create($request->all()));
            Auth::logout();
    
            flash('please contact system administrator for activation.');
    
            return redirect('auth/login');
        }
    ...
    

    และถ้าต้องการให้เปลี่ยนไปหน้าอื่นหลังจาก login ให้แก้

    protected $redirectPath = '/home';

    ไป route ที่ต้องการ

  3. ทดลอง logout แล้วก็ login ใหม่จะมี message These credentials do not match our records. ขึ้นมาทั้งๆที username และ password ถูกต้อง
  4. ไปแก้ record user ที่ใช้ให้ active = 1 แล้ว login ดูอีกครั้ง จะเข้าระบบได้แล้ว
  5. logout แล้วทดลองสมัครสมาชิกใหม่ จะต้องวิ่งไปในหน้าที่ต้องการโดยไม่ได้ล๊อกอิน
  6. สร้างหน้าจัดการ user โดยเปลี่ยนสถานะ
    0
    login ไม่ได้
    1
    login ได้
Exit mobile version