Laravel สร้างระบบ login ได้โดยทำตามคู่มือ Authentication หรือตาม ติดตั้ง laravel ลั๊ลลาเวล และ สร้างระบบ login ใน laravel 5
แต่เมื่อใครๆ ก็สามารถที่จะสมัครแล้วใช้งานได้เลย ทำให้ไม่ปลอดภัย จึงควรเพิ่มเงื่อนไขเข้าไป ทำได้โดย
การแก้ไขให้ตรวจสอบเพิ่มในการ login เข้าระบบทำได้โดย
- เพิ่ม column active ในตาราง users โดย
1
ALTER
TABLE
`users`
ADD
`active` TINYINT(1) UNSIGNED
NOT
NULL
DEFAULT
'0'
COMMENT
'0 inactive, 1 active'
AFTER
`id`;
- เปิดไฟล์ \app\Http\Controllers\Auth\AuthController.php แก้ตามตัวอย่าง
\app\Http\Controllers\Auth\AuthController.php 1234567891011121314151617181920212223242526272829303132333435...
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 ให้แก้
redirect after login 1protected
$redirectPath
=
'/home'
;
ไป 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