Перейти до основного вмісту

Spring Boot

casdoor-spring-boot-example - це приклад того, як використовувати casdoor-spring-boot-starter у проекті Spring Boot. Ми проведемо вас через наступні кроки.

Крок 1: Розгортання Casdoor

Deploy Casdoor in production mode. See Server installation. Ensure the server is reachable and you can sign in (e.g. admin / 123).

Крок 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 Server URL, наприклад http://localhost:8000
clientIdТакКлієнтський ID додатку
clientSecretТакКлієнтський секрет додатку
certificateТакСертифікат додатку
organizationNameТакОрганізація додатку
applicationNameНіНазва додатку
Ви можете використовувати Java properties або 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
обережно

Замініть значення конфігурації на ваші власні, особливо clientId, clientSecret, та jwtPublicKey.

Крок 4: Перенаправлення на сторінку входу

To authenticate users, redirect them to Casdoor’s login page (with the target URL as needed). Make sure you have added the callback URL (e.g. http://localhost:8080/login) in the application configuration beforehand.

@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: