Spring Boot
casdoor-spring-boot-example เป็นตัวอย่างของวิธีการใช้ casdoor-spring-boot-starter ในโปรเจ็กต์ Spring Boot เราจะแนะนำคุณผ่านขั้นตอนด้านล่าง
ขั้นตอนที่ 1: ติดตั้ง Casdoor
ประการแรก Casdoor ควรถูกติดตั้ง
คุณสามารถอ้างอิงเอกสารทางการของ Casdoor สำหรับ การติดตั้งเซิร์ฟเวอร์ ได้ โปรดติดตั้งอินสแตนซ์ Casdoor ของคุณใน โหมดการผลิต
หลังจากการติดตั้งที่สำเร็จ โปรดตรวจสอบสิ่งต่อไปนี้:
- เปิดเบราว์เซอร์ที่คุณชื่นชอบและเยี่ยมชม http://localhost:8000 คุณจะเห็นหน้าล็อกอินของ Casdoor
- ทดสอบฟังก์ชันล็อกอินโดยการใส่
admin
เป็นชื่อผู้ใช้และ123
เป็นรหัสผ่าน
ตอนนี้คุณสามารถรวดเร็วในการดำเนินการหน้าล็อกอินที่ใช้ Casdoor ในแอปของคุณเองโดยใช้ขั้นตอนต่อไปนี้
ขั้นตอนที่ 2: นำเข้า casdoor-spring-boot-starter
คุณสามารถนำเข้า casdoor-spring-boot-starter โดยใช้ Maven หรือ Gradle
- Maven
- Gradle
<!-- https://mvnrepository.com/artifact/org.casbin/casdoor-spring-boot-starter -->
<dependency>
<groupId>org.casbin</groupId>
<artifactId>casdoor-spring-boot-starter</artifactId>
<version>1.x.y</version>
</dependency>
// https://mvnrepository.com/artifact/org.casbin/casdoor-spring-boot-starter
implementation group: 'org.casbin', name: 'casdoor-spring-boot-starter', version: '1.x.y'
ขั้นตอนที่ 3: เริ่มต้นการกำหนดค่า
การเริ่มต้นต้องการพารามิเตอร์ประเภทสตริง 6 ตัวในลำดับต่อไปนี้:
| ชื่อ | จำเป็น | คำอธิบาย |
| ---------------- | ------ | ----------------------------------------------- |
| endpoint | ใช่ | Casdoor Server URL เช่น http://localhost:8000
|
| clientId | ใช่ | รหัสไคลเอนต์ของแอปพลิเคชัน |
| clientSecret | ใช่ | ความลับของไคลเอนต์ของแอปพลิเคชัน |
| certificate | ใช่ | ใบรับรองของแอปพลิเคชัน |
| organizationName | ใช่ | องค์กรของแอปพลิเคชัน |
| applicationName | ไม่ | ชื่อของแอปพลิเคชัน |
คุณสามารถใช้ไฟล์คุณสมบัติของ Java หรือไฟล์ YAML สำหรับการเริ่มต้น
- Properties
- YML
casdoor.endpoint = http://localhost:8000
casdoor.clientId = <client-id>
casdoor.clientSecret = <client-secret>
casdoor.certificate = <certificate>
casdoor.organizationName = built-in
casdoor.applicationName = app-built-in
casdoor:
endpoint: http://localhost:8000
client-id: <client-id>
client-secret: <client-secret>
certificate: <certificate>
organization-name: built-in
application-name: app-built-in
แทนที่ค่าการกำหนดค่าด้วยของอินสแตนซ์ Casdoor ของคุณเอง โดยเฉพาะ clientId
, clientSecret
, และ jwtPublicKey
ขั้นตอนที่ 4: ส่งต่อไปยังหน้าล็อกอิน
เมื่อคุณต้องการตรวจสอบสิทธิ์ผู้ใช้ที่เข้าถึงแอปของคุณ คุณสามารถส่ง URL เป้าหมายและส่งต่อไปยังหน้าล็อกอินที่ Casdoor ให้บริการ โปรดตรวจสอบว่าคุณได้เพิ่ม URL ของการเรียกกลับ (เช่น http://localhost:8080/login) ในการกำหนดค่าแอปพลิเคชันล่วงหน้า
@Resource
private CasdoorAuthService casdoorAuthService;
@RequestMapping("toLogin")
public String toLogin() {
return "redirect:" + casdoorAuthService.getSigninUrl("http://localhost:8080/login");
}
ขั้นตอนที่ 5: รับโทเค็นและวิเคราะห์
หลังจากการตรวจสอบของ Casdoor ผ่านแล้ว มันจะส่งกลับไปยังแอปพลิเคชันของคุณพร้อมกับรหัสและสถานะ
คุณสามารถรับรหัสและเรียกใช้เมธอด getOAuthToken
จากนั้นวิเคราะห์โทเค็น JWT
CasdoorUser
ประกอบด้วยข้อมูลพื้นฐานเกี่ยวกับผู้ใช้ที่ Casdoor ให้มา คุณสามารถใช้มันเพื่อตั้งค่าเซสชันในแอปพลิเคชันของคุณ
@RequestMapping("login")
public String login(String code, String state, HttpServletRequest request) {
String token = "";
CasdoorUser user = null;
try {
token = casdoorAuthService.getOAuthToken(code, state);
user = casdoorAuthService.parseJwtToken(token);
} catch (CasdoorAuthException e) {
e.printStackTrace();
}
HttpSession session = request.getSession();
session.setAttribute("casdoorUser", user);
return "redirect:/";
}
บริการ
ตัวอย่างของ API แสดงด้านล่าง:
- CasdoorAuthService
String token = casdoorAuthService.getOAuthToken(code, "app-built-in");
CasdoorUser casdoorUser = casdoorAuthService.parseJwtToken(token);
- CasdoorUserService
CasdoorUser casdoorUser = casdoorUserService.getUser("admin");
CasdoorUser casdoorUser = casdoorUserService.getUserByEmail("admin@example.com");
CasdoorUser[] casdoorUsers = casdoorUserService.getUsers();
CasdoorUser[] casdoorUsers = casdoorUserService.getSortedUsers("created_time", 5);
int count = casdoorUserService.getUserCount("0");
CasdoorResponse response = casdoorUserService.addUser(user);
CasdoorResponse response = casdoorUserService.updateUser(user);
CasdoorResponse response = casdoorUserService.deleteUser(user);
- CasdoorEmailService
CasdoorResponse response = casdoorEmailService.sendEmail(title, content, sender, receiver);
- CasdoorSmsService
CasdoorResponse response = casdoorSmsService.sendSms(randomCode(), receiver);
- CasdoorResourceService
CasdoorResponse response = casdoorResourceService.uploadResource(user, tag, parent, fullFilePath, file);
CasdoorResponse response = casdoorResourceService.deleteResource(file.getName());
ทรัพยากรเพิ่มเติม
คุณสามารถสำรวจโปรเจ็กต์/เอกสารต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการรวม Java กับ Casdoor: