การผสานรวมกับ WordPress สำหรับการอนุญาต
ส่วนที่สองของซีรีส์เกี่ยวกับการผสานรวม Logto กับ WordPress โดยเน้นที่การอนุญาต
ส่วนที่สองของซีรีส์เกี่ยวกับการผสานรวม Logto กับ WordPress โดยเน้นที่การอนุญาต
ใน บทความ ก่อนหน้า เราได้พูดถึงวิธีการผสานรวม Logto สำหรับการยืนยันตัวตนใน WordPress บทความนี้ซึ่งเป็นส่วนที่สอง จะลงลึกเกี่ยวกับกระบวนการอนุญาต โดยเน้นที่ระบบการกำหนดบทบาทใน WordPress และวิธีการเชื่อมโยงบทบาทกับ Logto เนื่องจากปลั๊กอินที่เราใช้ในบทความก่อนหน้าไม่ได้ให้ความสามารถในการอนุญาตโดยตรง
เราจะสร้างฟังก์ชันการเชื่อมโยงบทบาทที่กำหนดบทบาทของ WordPress ให้แก่ผู้ใช้โดยอัตโนมัติจากบทบาทที่ได้รับจาก Logto RBAC (การควบคุมการเข้าถึงตามบทบาท)
WordPress มีระบบการจัดการบทบาทผู้ใช้ในตัวที่กำหนดว่าผู้ใช้สามารถทำข้อผิดพลาด (ความสามารถ) ใดได้บ้างบนเว็บไซต์ บทบาทผู้ใช้เริ่มต้นได้แก่ ผู้ดูแลระบบ บรรณาธิการ ผู้แต่ง นักเขียนเนื้อหา และสมาชิก ซึ่งแต่ละคนมีชุดความสามารถของตนเอง
บทบาทเหล่านี้มีความสำคัญในการรักษาความปลอดภัยและประสิทธิภาพของการดำเนินงานของเว็บไซต์ เนื่องจากพวกเขารับประกันว่าผู้ใช้จะมีระดับการเข้าถึงที่เหมาะสมตามความรับผิดชอบของพวกเขา
Logto ใช้การควบคุมการเข้าถึงตามบทบาท (RBAC) เป็นโมเดลการอนุญาต โดยใช้ "ขอบเขต" เป็นหน่วยที่เล็กที่สุดของการอนุญาต ขอบเขตเหล่านี้กำหนดการกระทำเฉพาะที่ผู้ใช้ที่ผ่านการยืนยันตนสามารถกระทำได้ภายในแอปพลิเคชัน อย่างไรก็ตาม WordPress ทำงานบนหลักการที่แตกต่างกันสำหรับการจัดการการอนุญาตผู้ใช้ โดยอาศัยบทบาทที่กำหนดไว้ล่วงหน้าเพื่อบรรจุรวมความสามารถต่าง ๆ
ด้วยความแตกต่างพื้นฐานนี้ เราเสนอให้สร้างบทบาทพิเศษภายใน Logto ที่สอดคล้องกับบทบาทที่กำหนดใน WordPress แม้บทบาทเหล่านี้อาจไม่มีขอบเขตอยู่ พวกเขาเพียงแต่ใช้เป็นการอ้างอิงเพื่อเชื่อมโยงผู้ใช้กับบทบาทใน WordPress
ก่อนดำเนินการต่อ ให้คุณตรวจสอบว่ามีสิ่งต่อไปนี้:
ในการดำเนินการเชื่อมโยงบทบาท เราจะเพิ่มรหัสที่กำหนดเองลงในไฟล์ functions.php ของธีม WordPress ซึ่งเกี่ยวข้องกับการใช้ hook การกระทำ wp_login ซึ่งจะถูกกระตุ้นเมื่อผู้ใช้เข้าสู่ระบบ นี่คือคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการตั้งค่านี้:
เปิดไฟล์ functions.php ของธีมของคุณ คุณสามารถเข้าถึงไฟล์นี้ได้ผ่านแผงผู้ดูแลระบบ WordPress โดยไปที่ลักษณะ > ตัวแก้ไขธีมและเลือก functions.php จากรายการไฟล์ทางด้านขวามือ หรือในซอร์สโค้ด ไปที่ไดเรกทอรีธีม WordPress ของคุณและค้นหาไฟล์ functions.php ไฟล์นี้ช่วยให้คุณเพิ่มฟังก์ชัน PHP ที่กำหนดเองที่ขยายความสามารถของเว็บไซต์ WordPress ของคุณ
ด้านล่างนี้คือตัวอย่างที่ง่ายของฟังก์ชันที่คุณอาจเพิ่มลงใน functions.php ฟังก์ชันนี้จะถูกกระตุ้นเมื่อผู้ใช้เข้าสู่ระบบ และจะกำหนดบทบาทตามข้อมูล roles ของผู้ใช้ที่ดึงมาจาก Logto
ฟังก์ชัน logto_handler: ฟังก์ชันนี้รับสองพารามิเตอร์: $user_login (ชื่อผู้ใช้) และ $user (วัตถุผู้ใช้) มันดึงบทบาทจาก Logto ซึ่งเก็บอยู่ในข้อมูลเมตาผู้ใช้ในชื่อ openid-connect-generic-last-user-claim เชื่อมโยงบทบาทนี้กับบทบาท WordPress ที่สอดคล้องกันและกำหนดให้กับผู้ใช้
add_action: บรรทัดนี้ hook ฟังก์ชัน logto_handler ไปยังการกระทำ wp_login ซึ่งถูกกระตุ้นหลังจากที่ผู้ใช้เข้าสู่ระบบ 10 คือความสำคัญ (ค่าเริ่มต้น) และ 2 คือจำนวนอาร์กิวเมนต์ที่ฟังก์ชันนี้ยอมรับ
ตัวอย่างด้านบนกำหนดบทบาท 'editor' ให้กับผู้ใช้ที่ผ่านการรับรองโดย Logto ด้วยชื่อบทบาท group:editors อย่างไรก็ตาม ในสถานการณ์จริง คุณอาจจำเป็นต้องดำเนินการเชื่อมโยงบทบาทประเภทอื่นๆ มากขึ้น
คุณสามารถค้นหารายชื่อบทบาทใน WordPress และความสามารถของพวกเขา ที่นี่
ขณะนี้ ลองทดสอบฟังก์ชันการเชื่อมโยงบทบาทโดยการเข้าสู่ระบบด้วยผู้ใช้ที่มีบทบาท group:editors ใน Logto หลังจากเข้าสู่ระบบ ตรวจสอบบทบาทของผู้ใช้ใน WordPress เพื่อให้แน่ใจว่าการเชื่อมโยงทำงานได้ถูกต้อง
โดยการผสานรวม Logto กับ WordPress ทั้งสำหรับการยืนยันตัวตนและการอนุญาต คุณสามารถเพิ่มความปลอดภัยและความสามารถของไซต์ของคุณได้ โปรดจำไว้ว่าแม้โค้ดที่มีให้นี้เป็นตัวอย่างพื้นฐาน แต่คุณอาจจำเป็นต้องปรับให้เหมาะสมกับโครงสร้างบทบาทและการอนุญาตของเว็บไซต์ WordPress ของคุณ