การผสานรวมกับ WordPress สำหรับการอนุญาต
ส่วนที่สองของซีรีส์เกี่ยวกับการผสานรวม Logto กับ WordPress โดยเน้นที่การอนุญาต
ใน บทความ ก่อนหน้า เราได้พูดถึงวิธีการผสานรวม Logto สำหรับการยืนยันตัวตนใน WordPress บทความนี้ซึ่งเป็นส่วนที่สอง จะลงลึกเกี่ยวกับกระบวนการอนุญาต โดยเน้นที่ระบบการกำหนดบทบาทใน WordPress และวิธีการเชื่อมโยงบทบาทกับ Logto เนื่องจากปลั๊กอินที่เราใช้ในบทความก่อนหน้าไม่ได้ให้ความสามารถในการอนุญาตโดยตรง
เราจะสร้างฟังก์ชันการเชื่อมโยงบทบาทที่กำหนดบทบาทของ WordPress ให้แก่ผู้ใช้โดยอัตโนมัติจากบทบาทที่ได้รับจาก Logto RBAC (การควบคุมการเข้าถึงตามบทบาท)
การทำความเข้าใจบทบาทผู้ใช้ใน WordPress
WordPress มีระบบการจัดการบทบาทผู้ใช้ในตัวที่กำหนดว่าผู้ใช้สามารถทำข้อผิดพลาด (ความสามารถ) ใดได้บ้างบนเว็บไซต์ บทบาทผู้ใช้เริ่มต้นได้แก่ ผู้ดูแลระบบ บรรณาธิการ ผู้แต่ง นักเขียนเนื้อหา และสมาชิก ซึ่งแต่ละคนมีชุดความสามารถของตนเอง
บทบาทเหล่านี้มีความสำคัญในการรักษาความปลอดภัยและประสิทธิภาพของการดำเนินงานของเว็บไซต์ เนื่องจากพวกเขารับประกันว่าผู้ใช้จะมีระดับการเข้าถึงที่เหมาะสมตามความรับผิดชอบของพวกเขา
วิธีแก้ไขปัญหา: การเชื่อมโยงบทบาทที่กำหนดเอง
Logto ใช้การควบคุมการเข้าถึงตามบทบาท (RBAC) เป็นโมเดลการอนุญาต โดยใช้ "ขอบเขต" เป็นหน่วยที่เล็กที่สุดของการอนุญาต ขอบเขตเหล่านี้กำหนดการกระทำเฉพาะที่ผู้ใช้ที่ผ่านการยืนยันตนสามารถกระทำได้ภายในแอปพลิเคชัน อย่างไรก็ตาม WordPress ทำงานบนหลักการที่แตกต่างกันสำหรับการจัดการการอนุญาตผู้ใช้ โดยอาศัยบทบาทที่กำหนดไว้ล่วงหน้าเพื่อบรรจุรวมความสามารถต่าง ๆ
ด้วยความแตกต่างพื้นฐานนี้ เราเสนอให้สร้างบทบาทพิเศษภายใน Logto ที่สอดคล้องกับบทบาทที่กำหนดใน WordPress แม้บทบาทเหล่านี้อาจไม่มีขอบเขตอยู่ พวกเขาเพียงแต่ใช้เป็นการอ้างอิงเพื่อเชื่อมโยงผู้ใช้กับบทบาทใน WordPress
สิ่งที่ต้องมี
ก่อนดำเนินการต่อ ให้คุณตรวจสอบว่ามีสิ่งต่อไปนี้:
- เสร็จสิ้น บทความก่อนหน้า เกี่ยวกับการผสานรวม Logto กับ WordPress สำหรับการยืนยันตัวตน ซึ่งรวมถึง:
- เว็บไซต์ WordPress ที่มีการเข้าถึงผู้ดูแลระบบ
- บัญชี Logto ที่มีการตั้งค่าแอปพลิเคชันสำหรับเว็บไซต์ WordPress ของคุณ
- ปลั๊กอิน OpenID Connect Generic ที่ติดตั้งและกำหนดค่าในเว็บไซต์ WordPress ของ คุณ
- การตั้งค่าบทบาทใน Logto ที่สอดคล้องกับบทบาทใน WordPress ตัวอย่างเช่น หากคุณมีบทบาท 'editor' ใน WordPress ให้สร้างบทบาท 'group:editors' ใน Logto
การดำเนินการเชื่อมโยงบทบาทด้วยโค้ดที่กำหนดเอง
ในการดำเนินการเชื่อมโยงบทบาท เราจะเพิ่มรหัสที่กำหนดเองลงในไฟล์ functions.php
ของธีม WordPress ซึ่งเกี่ยวข้องกับการใช้ hook การกระทำ wp_login
ซึ่งจะถูกกระตุ้นเมื่อผู้ใช้เข้าสู่ระบบ นี่คือคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการตั้งค่านี้:
ขั้นตอนที่ 1: เข้าถึงไฟล์ functions.php ของธีมของคุณ
เปิดไฟล์ functions.php
ของธีมของคุณ คุณสามารถเข้า ถึงไฟล์นี้ได้ผ่านแผงผู้ดูแลระบบ WordPress โดยไปที่ลักษณะ > ตัวแก้ไขธีมและเลือก functions.php
จากรายการไฟล์ทางด้านขวามือ หรือในซอร์สโค้ด ไปที่ไดเรกทอรีธีม WordPress ของคุณและค้นหาไฟล์ functions.php
ไฟล์นี้ช่วยให้คุณเพิ่มฟังก์ชัน PHP ที่กำหนดเองที่ขยายความสามารถของเว็บไซต์ WordPress ของคุณ
ขั้นตอนที่ 2: เขียนฟังก์ชันการเชื่อมโยงบทบาท
ด้านล่างนี้คือตัวอย่างที่ง่ายของฟังก์ชันที่คุณอาจเพิ่มลงใน functions.php ฟังก์ชันนี้จะถูกกระตุ้นเมื่อผู้ใช้เข้าสู่ระบบ และจะกำหนดบทบาทตามข้อมูล roles
ของผู้ใช้ที่ดึงมาจาก Logto
ขั้นตอนที่ 3: ทำความเข้าใจโค้ดและการปรับแต่ง
-
ฟังก์ชัน
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 และความสามา รถของพวกเขา ที่นี่
ขั้นตอนที่ 4: ทดสอบการตั้งค่าของคุณ
ขณะนี้ ลองทดสอบฟังก์ชันการเชื่อมโยงบทบาทโดยการเข้าสู่ระบบด้วยผู้ใช้ที่มีบทบาท group:editors
ใน Logto หลังจากเข้าสู่ระบบ ตรวจสอบบทบาทของผู้ใช้ใน WordPress เพื่อให้แน่ใจว่าการเชื่อมโยงทำงานได้ถูกต้อง
สรุป
โดยการผสานรวม Logto กับ WordPress ทั้งสำหรับการยืนยันตัวตนและการอนุญาต คุณสามารถเพิ่มความปลอดภัยและความสามารถของไซต์ของคุณได้ โปรดจำไว้ว่าแม้โค้ดที่มีให้นี้เป็นตัวอย่างพื้นฐาน แต่คุณอาจจำเป็นต้องปรับให้เหมาะสมกับโครงสร้างบทบาทและการอนุญาตของเว็บไซต์ WordPress ของคุณ