DbSessionManager
DbSessionManager es un singleton que gestiona el mapa en memoria de sesiones de usuario activas. Cada sesión se representa mediante un token de tipo string que se asocia a un objeto Authentication de Spring Security. El manager es el punto central para resolver a quién pertenece un token, obtener acceso elevado a nivel de sistema, e inspeccionar las sesiones activas.
Métodos
Sección titulada «Métodos»getSystemToken
Sección titulada «getSystemToken»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getSystemToken() | String | Devuelve el token de administrador para el tenant del usuario actualmente conectado. Pase este token a cualquier método de la API para ejecutar la operación como el super-usuario del sistema en lugar del usuario actual. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.module.db.stuff.DbSessionManager;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); String systemToken = DbSessionManager.getInstance().getSystemToken(); // Delete is executed as the system super-user okmDocument.delete(systemToken, "d50133e3-dbfa-4d01-a109-28785cd48f40"); } catch (Exception e) { e.printStackTrace(); } }}getSystemToken (por tenant)
Sección titulada «getSystemToken (por tenant)»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getSystemToken(long tenantId) | String | Devuelve el token de administrador para el ID de tenant indicado. Use esta sobrecarga cuando el tenant no pueda resolverse desde el contexto de seguridad actual (por ejemplo, en hilos en segundo plano). |
Ejemplo:
package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) { try { long tenantId = 1L; String systemToken = DbSessionManager.getInstance().getSystemToken(tenantId); System.out.println("System token for tenant " + tenantId + ": " + systemToken); } catch (Exception e) { e.printStackTrace(); } }}getAuthentication
Sección titulada «getAuthentication»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getAuthentication(String token) | Authentication | Devuelve el objeto Authentication de Spring Security asociado al token indicado, o null si el token no existe. También actualiza la marca de tiempo del último acceso de la sesión. |
Ejemplo:
package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;import org.springframework.security.core.Authentication;
public class Test {
public static void main(String[] args) { try { String token = "some-token"; Authentication auth = DbSessionManager.getInstance().getAuthentication(token); if (auth != null) { System.out.println("User: " + auth.getName()); } } catch (Exception e) { e.printStackTrace(); } }}getUser
Sección titulada «getUser»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getUser(String token) | String | Devuelve el nombre de usuario asociado al token indicado, o null si el token no existe. |
Ejemplo:
package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) { try { String token = "some-token"; String user = DbSessionManager.getInstance().getUser(token); System.out.println("Token belongs to user: " + user); } catch (Exception e) { e.printStackTrace(); } }}getRoles
Sección titulada «getRoles»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getRoles(String token) | Set |
Devuelve el conjunto de nombres de rol concedidos al usuario asociado al token indicado. Devuelve un conjunto vacío si el token no existe. |
Ejemplo:
package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
import java.util.Set;
public class Test {
public static void main(String[] args) { try { String token = "some-token"; Set<String> roles = DbSessionManager.getInstance().getRoles(token); System.out.println("Roles: " + roles); } catch (Exception e) { e.printStackTrace(); } }}getToken
Sección titulada «getToken»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getToken(Authentication auth) | String | Devuelve la cadena de token asociada al objeto Authentication indicado, o null si no se encuentra ninguna sesión coincidente. |
Ejemplo:
package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;import org.springframework.security.core.Authentication;import org.springframework.security.core.context.SecurityContextHolder;
public class Test {
public static void main(String[] args) { try { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String token = DbSessionManager.getInstance().getToken(auth); System.out.println("Current user token: " + token); } catch (Exception e) { e.printStackTrace(); } }}getInfo
Sección titulada «getInfo»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getInfo(String token) | DbSessionInfo | Devuelve el objeto de información de sesión para el token indicado. DbSessionInfo contiene el objeto Authentication, la hora de creación de la sesión y la hora del último acceso. |
Ejemplo:
package com.openkm;
import com.openkm.bean.DbSessionInfo;import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) { try { String token = "some-token"; DbSessionInfo info = DbSessionManager.getInstance().getInfo(token); if (info != null) { System.out.println("Created: " + info.getCreation().getTime()); System.out.println("Last access: " + info.getLastAccess().getTime()); } } catch (Exception e) { e.printStackTrace(); } }}getTokens
Sección titulada «getTokens»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getTokens() | List |
Devuelve una lista de todos los tokens de sesión activos actualmente registrados en el session manager. |
Ejemplo:
package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) { try { for (String token : DbSessionManager.getInstance().getTokens()) { String user = DbSessionManager.getInstance().getUser(token); System.out.println("Token: " + token + " -> User: " + user); } } catch (Exception e) { e.printStackTrace(); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| add(String token, Authentication auth) | void | Registra una nueva sesión asociando el token indicado con un objeto Authentication. Las marcas de tiempo de creación y último acceso de la sesión se establecen a la hora actual. |
Ejemplo:
package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;import org.springframework.security.core.Authentication;import org.springframework.security.core.context.SecurityContextHolder;
import java.util.UUID;
public class Test {
public static void main(String[] args) { try { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String token = UUID.randomUUID().toString(); DbSessionManager.getInstance().add(token, auth); System.out.println("Session registered with token: " + token); } catch (Exception e) { e.printStackTrace(); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| remove(String token) | void | Elimina la sesión asociada al token indicado del session manager. |
Ejemplo:
package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) { try { String token = "some-token"; DbSessionManager.getInstance().remove(token); System.out.println("Session removed"); } catch (Exception e) { e.printStackTrace(); } }}