Перейти к основному содержанию

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 параметров типа string в следующем порядке: | Имя | Требуется | Описание | | ---------------- | --------- | ----------------------------------------------------- | | endpoint | Да | URL сервера Casdoor, например http://localhost:8000 | | clientId | Да | ID клиента приложения | | clientSecret | Да | Секрет клиента приложения | | certificate | Да | Сертификат приложения | | organizationName | Да | Организация приложения | | applicationName | Нет | Название приложения | Вы можете использовать свойства Java или файлы 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: Перенаправление на страницу входа

Когда вам нужно аутентифицировать пользователей, которые получают доступ к вашему приложению, вы можете отправить целевой 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: