Spring Boot
casdoor-spring-boot-example é um exemplo de como usar casdoor-spring-boot-starter em um projeto Spring Boot. Vamos guiá-lo através dos passos a seguir.
Passo 1: Implante o Casdoor
Deploy Casdoor in production mode. See Server installation. Ensure the server is reachable and you can sign in (e.g. admin / 123).
Passo 2: Importe casdoor-spring-boot-starter
Você pode importar o casdoor-spring-boot-starter usando Maven ou 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'
Passo 3: Inicialize a Configuração
A inicialização requer 6 parâmetros do tipo string na seguinte ordem:
| Nome | Obrigatório | Descrição |
|---|---|---|
| endpoint | Sim | URL do Servidor Casdoor, como http://localhost:8000 |
| clientId | Sim | ID do cliente da aplicação |
| clientSecret | Sim | Segredo do cliente da aplicação |
| certificate | Sim | Certificado da aplicação |
| organizationName | Sim | Organização da aplicação |
| applicationName | Não | Nome da aplicação |
| Você pode usar propriedades Java ou arquivos YAML para inicialização. |
- 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
Substitua os valores de configuração pelos da sua própria instância do Casdoor, especialmente o clientId, clientSecret e jwtPublicKey.
Passo 4: Redirecione para a Página de Login
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");
}
Passo 5: Obtenha o Token e Analise
Após a verificação do Casdoor ser aprovada, ele redirecionará de volta para o seu aplicativo com o código e o estado.
Você pode obter o código e chamar o método getOAuthToken, em seguida, analisar o token JWT.
CasdoorUser contém as informações básicas sobre o usuário fornecidas pelo Casdoor. Você pode usá-lo para definir a sessão em seu aplicativo.
@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:/";
}
Serviços
Exemplos de APIs são mostrados abaixo:
- 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());
Mais Recursos
Você pode explorar os seguintes projetos/documentos para aprender mais sobre a integração do Java com o Casdoor: