sql >> Databáze >  >> NoSQL >> Redis

spring-boot redis :Jak zrušit platnost všech relací uživatele?

Chtěl bych vás vědět, že you are following the correct path pro zneplatnění uživatelských relací

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

Něco k poznámce

SessionInformation.expireNow()

neznamená odstranit položky z redis databáze, pouze připojí atribut expired k session, jak jste správně zmínili.

Jak to ale zruší platnost relace uživatele?

Zde přichází do hry ConcurrentSessionFilter kde.doFilter() metoda dělá trik automatically logging out

Zde je úryvek pro 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);
}

Na zdraví!



  1. Zlepšení výkonu operační databáze v CDP Private Cloud Base 7 vs. CDH5

  2. Je v pořádku dotazovat se na MongoDB vícekrát na požadavek?

  3. Úvod do Spring Data MongoDB

  4. Redis - Jak souvisí klíč HASH a SET a ZSET na uložení CrudRepository?