Saltar al contenido principal

Spring Boot

casdoor-spring-boot-example es un ejemplo de cómo usar casdoor-spring-boot-starter en un proyecto de Spring Boot. Le guiaremos a través de los siguientes pasos.

Paso 1: Desplegar Casdoor

Primero, Casdoor debe ser desplegado.

Puede consultar la documentación oficial de Casdoor para la Instalación del Servidor. Por favor, despliegue su instancia de Casdoor en modo de producción.

Después de un despliegue exitoso, asegúrese de lo siguiente:

  • Abra su navegador favorito y visite http://localhost:8000. Verá la página de inicio de sesión de Casdoor.
  • Pruebe la funcionalidad de inicio de sesión ingresando admin como nombre de usuario y 123 como contraseña.

Ahora, puede implementar rápidamente una página de inicio de sesión basada en Casdoor en su propia aplicación utilizando los siguientes pasos.

Paso 2: Importar casdoor-spring-boot-starter

Puede importar casdoor-spring-boot-starter usando Maven o 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>

Paso 3: Inicializar Configuración

La inicialización requiere 6 parámetros de tipo cadena en el siguiente orden: | Nombre | Requerido | Descripción | | ---------------- | --------- | ------------------------------------------------------ | | endpoint | Sí | URL del Servidor Casdoor, como http://localhost:8000 | | clientId | Sí | ID del cliente de la aplicación | | clientSecret | Sí | Secreto del cliente de la aplicación | | certificate | Sí | Certificado de la aplicación | | organizationName | Sí | Organización de la aplicación | | applicationName | No | Nombre de la aplicación | Puede usar propiedades de Java o archivos YAML para la inicialización.

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
precaución

Reemplace los valores de configuración con los de su propia instancia de Casdoor, especialmente el clientId, clientSecret y jwtPublicKey.

Paso 4: Redirigir a la Página de Inicio de Sesión

Cuando necesite autenticar usuarios que acceden a su aplicación, puede enviar la URL objetivo y redirigir a la página de inicio de sesión proporcionada por Casdoor. Asegúrese de haber agregado la URL de retorno (por ejemplo, http://localhost:8080/login) en la configuración de la aplicación de antemano.

@Resource
private CasdoorAuthService casdoorAuthService;

@RequestMapping("toLogin")
public String toLogin() {
return "redirect:" + casdoorAuthService.getSigninUrl("http://localhost:8080/login");
}

Paso 5: Obtener Token y Analizar

Después de que la verificación de Casdoor sea aprobada, redirigirá de nuevo a su aplicación con el código y el estado.

Puede obtener el código y llamar al método getOAuthToken, luego analizar el token JWT.

CasdoorUser contiene la información básica sobre el usuario proporcionada por Casdoor. Puede usarlo para establecer la sesión en su aplicación.

@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:/";
}

Servicios

A continuación se muestran ejemplos de APIs:

  • 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());

Más Recursos

Puede explorar los siguientes proyectos/documentos para aprender más sobre la integración de Java con Casdoor: