Pular para o conteúdo principal

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.

<!-- 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>

Passo 3: Inicialize a Configuração

A inicialização requer 6 parâmetros do tipo string na seguinte ordem:

NomeObrigatórioDescrição
endpointSimURL do Servidor Casdoor, como http://localhost:8000
clientIdSimID do cliente da aplicação
clientSecretSimSegredo do cliente da aplicação
certificateSimCertificado da aplicação
organizationNameSimOrganização da aplicação
applicationNameNãoNome da aplicação
Você pode usar propriedades Java ou arquivos YAML para inicialização.
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
cuidado

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: