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، مثل http://localhost:8000
|
| clientId | نعم | معرف عميل التطبيق |
| clientSecret | نعم | سر عميل التطبيق |
| certificate | نعم | شهادة التطبيق |
| organizationName | نعم | منظمة التطبيق |
| applicationName | لا | اسم التطبيق |
يمكنك استخدام ملفات الخصائص الجافا أو ملفات 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: إعادة التوجيه إلى صفحة تسجيل الدخول
عندما تحتاج إلى مصادقة المستخدمين الذين يصلون إلى تطبيقك، يمكنك إرسال الرابط المستهدف وإعادة التوجيه إلى صفحة تسجيل الدخول التي يوفرها Casdoor. تأكد من أنك أضفت رابط الرجوع (مثل 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:/";
}
الخدمات
أمثلة على واجهات برمجة التطبيقات موضحة أدناه:
- 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: