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