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). Certifique-se de ter adicionado a URL de retorno (por exemplo, http://localhost:8080/login) na configuração do aplicativo antecipadamente.

@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: