Laravel สร้างระบบ login ได้โดยทำตามคู่มือ Authentication หรือตาม ติดตั้ง laravel ลั๊ลลาเวล และ สร้างระบบ login ใน laravel 5
แต่เมื่อใครๆ ก็สามารถที่จะสมัครแล้วใช้งานได้เลย ทำให้ไม่ปลอดภัย จึงควรเพิ่มเงื่อนไขเข้าไป ทำได้โดย
การแก้ไขให้ตรวจสอบเพิ่มในการ login เข้าระบบทำได้โดย
- เพิ่ม column active ในตาราง users โดย[code language=”sql”]ALTER TABLE `users` ADD `active` TINYINT(1) UNSIGNED NOT NULL DEFAULT ‘0’ COMMENT ‘0 inactive, 1 active’ AFTER `id`;[/code]
- เปิดไฟล์ \app\Http\Controllers\Auth\AuthController.php แก้ตามตัวอย่าง[code language=”php” title=”\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’);
}
…
[/code]และถ้าต้องการให้เปลี่ยนไปหน้าอื่นหลังจาก login ให้แก้[code language=”php” title=”redirect after login”]protected $redirectPath = ‘/home’;[/code]ไป route ที่ต้องการ - ทดลอง logout แล้วก็ login ใหม่จะมี message These credentials do not match our records. ขึ้นมาทั้งๆที username และ password ถูกต้อง
- ไปแก้ record user ที่ใช้ให้ active = 1 แล้ว login ดูอีกครั้ง จะเข้าระบบได้แล้ว
- logout แล้วทดลองสมัครสมาชิกใหม่ จะต้องวิ่งไปในหน้าที่ต้องการโดยไม่ได้ล๊อกอิน
- สร้างหน้าจัดการ user โดยเปลี่ยนสถานะ
- 0
- login ไม่ได้
- 1
- login ได้
About the author