Next.js
nextjs-auth เป็นตัวอย่างของการรวม casdoor เข้ากับโปรเจค next-js เราจะแนะนำคุณผ่านขั้นตอนด้านล่าง
ขั้นตอนที่ 1: การติดตั้ง Casdoor
ก่อนอื่น, ควรทำการติดตั้ง Casdoor
คุณสามารถอ้างอิงไปยังเอกสารอย่างเป็นทางการของ Casdoor สำหรับ การติดตั้งเซิร์ฟเวอร์ กรุณาติดตั้ง instance Casdoor ของคุณใน โหมดการผลิต
หลังจากการติดตั้งที่สำเร็จ, โปรดตรวจสอบสิ่งต่อไปนี้:
- เปิดเบราว์เซอร์ที่คุณชอบและเยี่ยมชม http://localhost:8000 คุณจะเห็นหน้าล็อกอินของ Casdoor
- ทดสอบฟังก์ชันล็อกอินโดยการใส่
admin
เป็นชื่อผู้ใช้และ123
เป็นรหัสผ่าน
หลังจากนั้น, คุณสามารถรวมหน้าล็อกอินที่ใช้ Casdoor เข้ากับแอปของคุณได้อย่างรวดเร็วโดยใช้ขั้นตอนต่อไปนี้
ขั้นตอนที่ 2: เพิ่ม Middleware
Middleware ช่วยให้คุณสามารถรันโค้ดก่อนที่คำขอจะเสร็จสมบูรณ์ จากนั้น, ขึ้นอยู่กับคำขอที่เข้ามา, คุณสามารถปรับเปลี่ยนการตอบสนองโดยการเขียนใหม่, การเปลี่ยนทิศทาง, การแก้ไขส่วนหัวของคำขอหรือการตอบสนอง, หรือการตอบสนองโดยตรง
ใช้ไฟล์ middleware.ts
(หรือ .js
) ในรากของโปรเจคของคุณเพื่อกำหนด Middleware ตัวอย่างเช่น, ในระดับเดียวกับ pages
หรือ app
, หรือภายใน src
ถ้าเหมาะสม
ตัวอย่าง
//define which paths Middleware will run on
const protectedRoutes = ["/profile"];
export default function middleware(req) {
if (protectedRoutes.includes(req.nextUrl.pathname)) {
//redirect the incoming request to a different URL
return NextResponse.redirect(new URL("/login", req.url));
}
}
ดูเอกสารอย่างเป็นทางการของ next.js middleware เพื่อข้อมูลเพิ่มเติม
ขั้นตอนที่ 3: ใช้งาน Casdoor SDK
1.ติดตั้ง SDK
ก่อนอื่น, ติดตั้ง casdoor-js-sdk
ผ่าน NPM หรือ Yarn:
npm install casdoor-js-sdk
หรือ:
yarn add casdoor-js-sdk
2.การเริ่มต้นใช้งาน SDK
จากนั้น กำหนดค่าพารามิเตอร์ที่เป็นสตริง 6 ตัวในลำดับต่อไปนี้:
ชื่อ | จำเป็น | คำอธิบาย |
---|---|---|
serverUrl | ใช่ | URL เซิร์ฟเวอร์ Casdoor, เช่น http://localhost:8000 |
clientId | ใช่ | รหัสไคลเอนต์ของแอปพลิเคชัน |
clientSecret | ใช่ | ความลับของไคลเอนต์แอปพลิเคชัน |
organizationName | ใช่ | องค์กรของแอปพลิเคชัน |
appName | ใช่ | ชื่อของแอปพลิเคชัน |
redirectPath | ใช่ | URL ที่จะเปลี่ยนเส้นทางไป |
ตัวอย่าง
const sdkConfig = {
serverUrl: "https://door.casdoor.com",
clientId: "294b09fbc17f95daf2fe",
clientSecret: "dd8982f7046ccba1bbd7851d5c1ece4e52bf039d",
organizationName: "casbin",
appName: "app-vue-python-example",
redirectPath: "/callback",
};
แทนที่ค่าการกำหนดค่าด้วยของ instance Casdoor ของคุณเอง, โดยเฉพาะ clientId
, clientSecret
, และ serverUrl
3.เปลี่ยนเส้นทางไปยังหน้าล็อกอิน
เมื่อคุณต้องการตรวจสอบสิทธิ์ผู้ใช้ที่เข้าถึงแอปของคุณ, คุณสามารถส่ง URL เป้าหมายและเปลี่ยนเส้นทางไปยังหน้าล็อกอินที่ Casdoor ให้บริการ
ตรวจสอบให้แน่ใจว่าคุณได้เพิ่ม URL สำหรับการเรียกกลับ (เช่น http://localhost:8080/callback) ในการกำหนดค่าแอปพลิเคชันล่วงหน้า
const CasdoorSDK = new Sdk(sdkConfig);
CasdoorSDK.signin_redirect();
4.รับ Token และการเก็บข้อมูล
หลังจากการตรวจสอบของ Casdoor ผ่าน, มันจะเปลี่ยนเส้นทางกลับไปยังแอปพลิเคชันของคุณพร้อมกับ token
คุณสามารถเลือกใช้ cookie เพื่อเก็บ token
CasdoorSDK.exchangeForAccessToken()
.then((res) => {
if (res && res.access_token) {
//Get Token
return CasdoorSDK.getUserInfo(res.access_token);
}
})
.then((res) => {
// Storage Token
Cookies.set("casdoorUser", JSON.stringify(res));
});
คุณสามารถอ้างอิงไปยังเอกสารอย่างเป็นทางการของ Casdoor สำหรับ วิธีการใช้ Casdoor SDK
ขั้นตอนที่ 4: เพิ่มฟังก์ชันการตรวจสอบสิทธิ์ของ Middleware
เมื่อผู้ใช้พยายามเข้าถึงเส้นทางที่ถูกป้องกัน, ฟังก์ชันการตรวจสอบสิทธิ์ของ Middleware จะทำการยืนยันตัวตนของพวกเขา หากผู้ใช้ไม่ได้รับการตรวจสอบสิทธิ์, พวกเขาจะถูกเปลี่ยนเส้นทางไปยังหน้าล็อกอินหรือถูกปฏิเสธการเข้าถึง
ตัวอย่าง
//protected route
const protectedRoutes = ["/profile"];
const casdoorUserCookie = req.cookies.get("casdoorUser");
const isAuthenticated = casdoorUserCookie ? true : false;
//Authentication Function
if (!isAuthenticated && protectedRoutes.includes(req.nextUrl.pathname)) {
return NextResponse.redirect(new URL("/login", req.url));
}