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 параметров типа string в следующем порядке:
| Имя | Требуется | Описание |
| ---------------- | --------- | ----------------------------------------------------- |
| endpoint | Да | URL сервера Casdoor, например http://localhost:8000
|
| clientId | Да | ID клиента приложения |
| 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: