sql >> Database >  >> NoSQL >> Redis

spring-boot redis :Hoe alle sessies van een gebruiker ongeldig maken?

Ik zou graag willen weten dat you are following the correct path voor het ongeldig maken van de gebruikerssessies

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

Iets om op te merken

SessionInformation.expireNow()

is niet bedoeld om items uit de redis . te verwijderen database, het voegt gewoon het verlopen attribuut toe aan de sessie, zoals je terecht zei.

Maar hoe maakt dit de sessie van de gebruiker ongeldig?

Hier komt het ConcurrentSessionFilter in het spel waar.doFilter() methode doet het automatically logging out

Hier is het fragment voor 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);
}

Proost daarvoor!



  1. Future of Hadoop - Salarissen en baanvoorspellingen in big data-analyse

  2. Foutmelding:MongoError:slechte auth Verificatie mislukt via URI-tekenreeks

  3. MongoDB C# Query Array van objecten die een eigenschapswaarde bevatten

  4. PHP kan MongoDB-stuurprogramma niet vinden