ดีบักและทดสอบ UI ที่คุณปรับแต่งเองแบบโลคอล
สำหรับผู้ใช้ Logto Cloud เราได้ทำให้คุณสามารถ "นำ UI ของคุณเองมาใช้" กับ Logto ได้อย่างง่ายดาย ผู้ใช้ Cloud สามารถอัปโหลดไฟล์ zip ที่มี asset ของ UI ที่ปรับแต่งเองได้ที่ Console > Sign-in & account > Branding > Bring your UI (ดูรายละเอียดเพิ่มเติมได้ที่หน้า Bring your UI)
อย่างไรก็ตาม ในระหว่างการพัฒนา UI หน้าเหล่านี้ ผู้ใช้มักต้องการทดสอบและดีบักโค้ดแบบโลคอลก่อนอัปโหลดขึ้น Logto Cloud คำสั่ง CLI นี้จะช่วยให้คุณตั้งค่า tunnel แบบโลคอลและเชื่อมต่อ 3 องค์ประกอบต่อไปนี้เข้าด้วยกัน: จุดเชื่อมต่อ auth ของ Logto Cloud, แอปพลิเคชันของคุณ, และ UI ลงชื่อเข้าใช้ที่คุณปรับแต่งเอง
ทำไมฉันต้องใช้สิ่งนี้?
โดยปกติ เมื่อคุณคลิกปุ่ม "sign-in" ในแอปพลิเคชันของคุณ คุณจะถูกนำไปยังหน้าลงชื่อเข้าใช้ที่ตั้งค่าไว้ที่ endpoint ของ Logto กระบวนการลงชื่อเข้าใช้ที่สำเร็จจะเป็นดังนี้:
แต่เมื่อคุณกำลังพัฒนา UI ลงชื่อเข้าใช้ที่ปรับแต่งเอง คุณจำเป็นต้องมีวิธีนำทางไปยังหน้า UI ลงชื่อเข้าใช้ที่รันอยู่บนเครื่องของคุณแทน สิ่งนี้ต้องใช้บริการ tunnel แบบโลคอลเพื่อดักจับคำขอที่ออกจากแอปของคุณและเปลี่ยนเส้นทางไปยังหน้า UI ลงชื่อเข้าใช้ที่คุณปรับแต่งเอง
นอกจากนี้ คุณยังต้องโต้ตอบกับ Logto's Experience API เพื่อยืนยันตัวตนผู้ใช้และจัดการเซสชัน บริการนี้ยังช่วย forward คำขอ Experience API เหล่านี้ไปยัง Logto Cloud เพื่อหลีกเลี่ยงปัญหา CORS
ไดอะแกรม sequence ด้านล่างแสดงให้เห็นว่า flow "sign-in" ที่สำเร็จจะทำงานอย่างไรเมื่อใช้ UI ที่คุณปรับแต่งเองและบริการ tunnel:
เมื่อมีบริการ tunnel นี้ คุณสามารถพัฒนาและทดสอบ UI ลงชื่อเข้าใช้ที่ปรับแต่งเองแบบโลคอลได้ โดยไม่ต้องอัปโหลด asset ไปยัง Logto Cloud ทุกครั้งที่มีการเปลี่ยนแปลง
คำแนะนำ
ขั้นตอนที่ 1: รันคำสั่ง
สมมติว่า Cloud tenant ID ของคุณคือ foobar และคุณมีหน้า sign-in ที่รันอยู่บน dev server ที่ http://localhost:4000 คุณสามารถรันคำสั่งนี้ได้ดังนี้:
- CLI
- npx
logto-tunnel -p 9000 --experience-uri http://localhost:4000/ --endpoint https://foobar.logto.app/
npx @logto/tunnel -p 9000 --experience-uri http://localhost:4000/ --endpoint https://foobar.logto.app/
หากคุณตั้งค่า custom domain ใน Logto ก็สามารถใช้ได้เช่นกัน:
- CLI
- npx
logto-tunnel -p 9000 --experience-uri http://localhost:4000/ --endpoint https://your.custom.domain/
npx @logto/tunnel -p 9000 --experience-uri http://localhost:4000/ --endpoint https://your.custom.domain/
หรืออีกทางหนึ่ง คำสั่งนี้ยังรองรับ asset html แบบ static โดยไม่ต้องรัน dev server ก่อน เพียงแค่แน่ใจว่ามี index.html อยู่ใน path ที่คุณระบุ
- CLI
- npx
logto-tunnel -p 9000 --experience-path /path/to/your/static/files --endpoint https://foobar.logto.app/
npx @logto/tunnel -p 9000 --experience-path /path/to/your/static/files --endpoint https://foobar.logto.app/
ขั้นตอนที่ 2: อัปเดต endpoint URI ในแอปของคุณ
สุดท้าย รันแอปของคุณและตั้งค่า endpoint ของ Logto ให้เป็นที่อยู่ของ tunnel service คือ http://localhost:9000/ แทน
ขอยกตัวอย่างแอป React:
import { LogtoProvider, LogtoConfig } from '@logto/react';
// endpoint: 'https://foobar.logto.app/', // endpoint เดิมของ Logto Cloud
const config: LogtoConfig = {
endpoint: 'http://localhost:9000/', // ที่อยู่ tunnel service
appId: '<your-application-id>',
};
const App = () => (
<LogtoProvider config={config}>
<YourAppContent />
</LogtoProvider>
);
หากคุณใช้ social sign-in คุณต้องอัปเดต redirect URI ในการตั้งค่าผู้ให้บริการ social ให้เป็นที่อยู่ tunnel service ด้วย
http://localhost:9000/callback/<connector-id>
หากตั้งค่าทุกอย่างถูกต้อง เมื่อคุณคลิกปุ่ม "sign-in" ในแอปของคุณ คุณจะถูกนำไปยังหน้า sign-in ที่คุณปรับแต่งเองแทน UI มาตรฐานของ Logto พร้อมกับ session (cookie) ที่ถูกต้องซึ่งช่วยให้คุณโต้ตอบกับ Logto Experience API ต่อไปได้
ขอให้สนุกกับการเขียนโค้ด!
แหล่งข้อมูลที่เกี่ยวข้อง
ทำการ deploy UI ลงชื่อเข้าใช้ที่คุณปรับแต่งเองโดยอัตโนมัติด้วย GitHub Actions workflow