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

Primeiramente, o Casdoor deve ser implantado.

Você pode consultar a documentação oficial do Casdoor para a Instalação do Servidor. Por favor, implante sua instância do Casdoor em modo de produção.

Após uma implantação bem-sucedida, certifique-se do seguinte:

  • Abra seu navegador favorito e visite http://localhost:8000. Você verá a página de login do Casdoor.
  • Teste a funcionalidade de login inserindo admin como nome de usuário e 123 como senha.

Agora, você pode implementar rapidamente uma página de login baseada no Casdoor em seu próprio aplicativo usando os seguintes passos.

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

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

Quando você precisar autenticar usuários que acessam seu aplicativo, você pode enviar a URL de destino e redirecionar para a página de login fornecida pelo Casdoor. 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: