Zend Framework - การรับรองความถูกต้อง
การพิสูจน์ตัวตนเป็นหนึ่งในคุณสมบัติที่สำคัญที่สุดและต้องมีในเว็บแอปพลิเคชันใด ๆ Zend Framework จัดเตรียมองค์ประกอบแยกต่างหากเพื่อจัดการการพิสูจน์ตัวตนซึ่งเรียกว่าเป็นไฟล์zend-authentication.
ติดตั้งส่วนประกอบการรับรองความถูกต้อง
สามารถติดตั้งส่วนประกอบการพิสูจน์ตัวตนได้โดยใช้สิ่งต่อไปนี้ Composer คำสั่ง
composer require zendframework/zend-authentication
แนวคิด
โดยปกตินักพัฒนาจะเขียนฟังก์ชัน php เพื่อรับรองความถูกต้องของรายละเอียดผู้ใช้กับแหล่งข้อมูล เมื่อการรับรองความถูกต้องเสร็จสิ้นรายละเอียดการพิสูจน์ตัวตนจะยังคงอยู่สำหรับการร้องขอในภายหลัง Zend Framework สรุปแนวคิดนี้และมีสองคลาสซึ่งอธิบายไว้ด้านล่าง -
คลาส 1 Zend \ Authentication \ Adapter \ AdaptorInterface
คลาสนี้มีวิธีการเดียว authenticateเพื่อเขียนตรรกะการรับรองความถูกต้อง วิธีการพิสูจน์ตัวตนส่งคืนอินสแตนซ์ของZend\Authentication\Result ชั้นเรียน.
นี้ Resultวัตถุมีสถานะการรับรองความถูกต้อง ข้อมูลประจำตัวหากการพิสูจน์ตัวตนสำเร็จและข้อความแสดงข้อผิดพลาดหากการพิสูจน์ตัวตนล้มเหลว ลายเซ็นของอินเทอร์เฟซการพิสูจน์ตัวตนและคลาสผลลัพธ์มีดังนี้ -
AdaptorInterface
namespace Zend\Authentication\Adaptor;
public function authenticate() {
// code
}
Result class
namespace Zend\Authentication;
class Result {
public function __construct($code, $identity, array $messages = []);
}
Zend Framework จัดเตรียมการใช้งานเริ่มต้นเพื่อพิสูจน์ตัวตนกับฐานข้อมูล, ldap, http basic และสรุปข้อมูลประจำตัว อันAdaptor รับรองความถูกต้อง แต่ไม่คงรายละเอียดสำหรับคำขอในอนาคต
คลาส 2 Zend \ Authentication \ AuthenticationService
AuthenticationService เป็นส่วนประกอบหลักซึ่งใช้อะแด็ปเตอร์ที่กำหนดค่าไว้แล้วเพื่อวัตถุประสงค์ในการพิสูจน์ตัวตน เมื่อการรับรองความถูกต้องเสร็จสิ้นจะยังคงมีรายละเอียดการรับรองความถูกต้องและมีวิธีการhasIdentity() เพื่อตรวจสอบว่ามีข้อมูลประจำตัวหรือไม่ getIdentity() เพื่อรับรายละเอียดการรับรองความถูกต้องและ clearIdentity() เพื่อล้างรายละเอียดการตรวจสอบสิทธิ์
รายการรหัสบางส่วนที่จะใช้ AuthenticationService มีดังต่อไปนี้ -
$adap = new Adapter($username, $password);
$auth = new AuthenticationService(); $result = $auth->authenticate($adap);
if($result->isValid) { $identity = $auth->getIdentity(); } else { // process $result->getMessages()
}
// clear
$auth->clearIdentity();
สิ่งที่เกี่ยวข้องกับการอนุญาตถูกบรรจุเป็นโมดูลสองโมดูลแยกกันคือ - zend-permissions-acl และ zend-permissions-rbac. zend-permissions-acl ขึ้นอยู่กับรายการ Access control และ zend-permissions-rbac จะขึ้นอยู่กับรายการควบคุมการเข้าถึงตามบทบาท พวกเขาให้นามธรรมระดับสูงของแนวคิด ACL & RBAC และช่วยในการเขียนแอปพลิเคชันระดับองค์กร