التخطي إلى المحتوى الرئيسي

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.

<!-- 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>

الخطوة 3: تهيئة الإعدادات

التهيئة تتطلب 6 معاملات من نوع النص بالترتيب التالي: | الاسم | مطلوب | الوصف | | ---------------- | ----- | ---------------------------------------------- | | endpoint | نعم | رابط خادم Casdoor، مثل http://localhost:8000 | | clientId | نعم | معرف عميل التطبيق | | clientSecret | نعم | سر عميل التطبيق | | certificate | نعم | شهادة التطبيق | | organizationName | نعم | منظمة التطبيق | | applicationName | لا | اسم التطبيق | يمكنك استخدام ملفات الخصائص الجافا أو ملفات YAML للتهيئة.

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، خاصة 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: