Class RedisSessionStore

java.lang.Object
br.ufsc.labsec.signature.database.authCodeSession.RedisSessionStore
All Implemented Interfaces:
AuthCodeSessionStore

public class RedisSessionStore
extends Object
implements AuthCodeSessionStore
Implementação de AuthCodeSessionStore usando Redis. Esta classe gerencia o armazenamento de sessões de autenticação em um servidor Redis. Cada sessão é armazenada como um Hash.
  • Constructor Details

    • RedisSessionStore

      public RedisSessionStore​(String redisUri)
      Construtor que inicializa a conexão com o Redis e registra um shutdown hook para liberar os recursos no encerramento da aplicação.
      Parameters:
      redisUri - A URI de conexão do Redis.
  • Method Details

    • close

      public void close()
    • saveSession

      public void saveSession​(String sessionId, String key, String value)
      Salva um par chave-valor para uma sessão em um Hash do Redis. A cada salvamento, o tempo de expiração da sessão (o Hash inteiro) é renovado.
      Specified by:
      saveSession in interface AuthCodeSessionStore
      Parameters:
      sessionId - O identificador da sessão (será a chave do Hash).
      key - A chave do valor a ser salvo (será o field do Hash).
      value - O valor a ser salvo.
    • getSession

      public String getSession​(String sessionId, String key)
      Obtém o valor de uma chave específica para uma sessão de um Hash do Redis.
      Specified by:
      getSession in interface AuthCodeSessionStore
      Parameters:
      sessionId - O identificador da sessão.
      key - A chave do valor a ser recuperado.
      Returns:
      O valor associado à chave, ou null se não for encontrado.
    • removeSession

      public void removeSession​(String sessionId)
      Deleta a sessão inteira (o Hash) do Redis.
      Specified by:
      removeSession in interface AuthCodeSessionStore
      Parameters:
      sessionId - O identificador da sessão a ser removido.
    • getExpiredSessionIds

      public Set<String> getExpiredSessionIds​(Duration expirationTime)
      NOTA IMPORTANTE SOBRE EXPIRAÇÃO: O Redis gerencia a expiração de chaves automaticamente. Retorna um conjunto vazio, pois a limpeza é passiva e automática no Redis.
      Specified by:
      getExpiredSessionIds in interface AuthCodeSessionStore
      Parameters:
      expirationTime - A duração para verificar (não utilizado).
      Returns:
      Um conjunto vazio.