Redis
 sql >> Baza danych >  >> NoSQL >> Redis

spring-boot redis :Jak unieważnić wszystkie sesje użytkownika?

Chciałbym Cię wiedzieć, że you are following the correct path do unieważniania sesji użytkownika

    usersSessions.forEach((session) -> {        
        sessionRegistry.getSessionInformation(session.getId()).expireNow();
    });

Coś do zapamiętania

SessionInformation.expireNow()

nie oznacza usuwania wpisów z redis bazy danych, po prostu dołącza do sesji atrybut wygasły, jak słusznie wspomniałeś.

Ale w jaki sposób unieważnia to sesję użytkownika?

W grę wchodzi ConcurrentSessionFilter, gdzie.doFilter() Metoda polega na automatically logging out

Oto fragment kodu ConcurrentSessionFilter

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
        throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    HttpSession session = request.getSession(false);

    if (session != null) {
        SessionInformation info = sessionRegistry.getSessionInformation(session
                .getId());

        if (info != null) {
            if (info.isExpired()) {
                // Expired - abort processing
                doLogout(request, response);

                String targetUrl = determineExpiredUrl(request, info);

                if (targetUrl != null) {
                    redirectStrategy.sendRedirect(request, response, targetUrl);

                    return;
                }
                else {
                    response.getWriter().print(
                            "This session has been expired (possibly due to multiple concurrent "
                                    + "logins being attempted as the same user).");
                    response.flushBuffer();
                }

                return;
            }
            else {
                // Non-expired - update last request date/time
                sessionRegistry.refreshLastRequest(info.getSessionId());
            }
        }
    }

    chain.doFilter(request, response);
}

Pozdrawiam!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis — Jak skonfigurować niestandardowe konwersje

  2. Redis :Jak mogę sortować mój hash według kluczy?

  3. Prototyp obiektu Node.JS może być tylko Object lub null z Redis

  4. Obsługa przejściowych błędów sieciowych za pomocą StackExchange.Redis

  5. Rekomendacje biblioteki klienta Redis do użytku ze Scala