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