Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

स्प्रिंग-बूट रेडिस:किसी उपयोगकर्ता के सभी सत्रों को अमान्य कैसे करें?

मैं आपको जानना चाहता हूं कि you are following the correct path उपयोगकर्ता सत्रों को अमान्य करने के लिए

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

ध्यान देने योग्य बातें

SessionInformation.expireNow()

redis . से प्रविष्टियों को हटाने का मतलब नहीं है डेटाबेस, जैसा कि आपने सही उल्लेख किया है, यह सत्र में समाप्त होने वाली विशेषता को जोड़ता है।

लेकिन यह कैसे उपयोगकर्ता के सत्र को अमान्य करता है?

यहाँ ConcurrentSessionFilter चलन में आता है जहाँ.doFilter() विधि automatically logging out की चाल है

यहां 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);
}

इसके लिए बधाई!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेडिस लुआ वास्तव में इसका उपयोग कब करें?

  2. डिक्शनरी से रेडिस में बैच सेट डेटा

  3. रेडिस, पबसुब की घटनाओं को सुनना और उन्हें अधिक विश्वसनीय उपभोग के लिए एक स्ट्रीम में बदलना

  4. अपने वर्डप्रेस इंस्टॉलेशन को गति देने के लिए रेडिस ऑब्जेक्ट कैश का उपयोग करना

  5. Socket.io एकाधिक सर्वरों पर संदेश कैसे भेजता है?