Anwendungsfall: Begrenzen der Anzahl der Sitzungen

In diesem Anwendungsfall ist es erforderlich, die Anzahl der aktiven Backend-Sitzungen zu begrenzen. In der Bereitstellung hat jede Sitzungsanmeldung eine Anmeldung in der URL und jede Sitzungsabmeldung hat sich in der URL abmelden. Bei erfolgreicher Anmeldung setzt das Backend ein Sessionid-Cookie mit einem eindeutigen 10-stelligen Wert.

Führen Sie die folgenden Vorgänge aus, um diesen Anwendungsfall zu erreichen:

  1. Erstellen Sie eine Kartenvariable, die jede aktive Sitzung speichern kann. Der Schlüssel der Karte ist die Sitzungsnummer. Die Ablaufzeit für die Variable ist auf 600 Sekunden (10 Minuten) eingestellt.</span>

    > add ns variable session_map -type map(text(10),ulong,100) -expires 600
    
  2. Erstellen Sie die folgenden Zuordnungen für die Zuordnungsvariable:</span>

    • Erstellen Sie einen Eintrag für die sessionid und setzen Sie diesen Wert auf 1 (dieser Wert wird nicht verwendet).</span>

       > add ns assignment add_session -variable '$session_map[http.req.cookie.value("sessionid")]' -set 1
      
    • Weisen Sie den Eintrag für eine Sitzungs-ID auf, die implizit die Anzahl der Werte für session_map verringert.</span>

       > add ns assignment delete_session -variable '$session_map[http.req.cookie.value("sessionid")]' -clear
      
  3. Erstellen Sie Responder-Richtlinien für Folgendes:</span>

    • Überprüfen Sie, ob ein Zuordnungseintrag für diese Sitzungsnummer in der HTTP-Anforderung vorhanden ist. Die Zuweisung add_session wird ausgeführt, wenn der Zuordnungseintrag nicht vorhanden ist.</span>

       > add responder policy add_session_pol 'http.req.url.contains("twbkwbis.P_SabanciLogin") || $session_map.valueExists(http.req.cookie.value("netsuis"))' add_session
      

      Hinweis: Die Funktion valueExists () in der Richtlinie add_session_pol zählt als Verweis auf den Zuordnungseintrag der Sitzung, sodass jede Anforderung das Ablaufzeitlimit für ihre Sitzung zurücksetzt. Wenn nach 10 Minuten keine Anforderungen für eine Sitzung empfangen werden, wird der Eintrag der Sitzung aufgehoben.

    • Um zu überprüfen, wann die Sitzung abgemeldet ist. Die delete_session Zuweisung wird ausgeführt.</span>

       add responder policy delete_session_pol "http.req.url.contains("Logout")" delete_session
      
    • Überprüfen Sie, ob Anmeldeanforderungen vorhanden sind und ob die Anzahl der aktiven Sitzungen 100 überschreitet. Wenn diese Bedingungen erfüllt sind, wird der Benutzer zur Begrenzung der Anzahl der Sitzungen auf eine Seite umgeleitet, die angibt, dass der Server ausgelastet ist.</span>

       add responder action redirect_too_busy redirect "/too_busy.html"
       add responder policy check_login_pol "http.req.url.contains("twbkwbis.P_SabanciLogin") && $session_map.valueCount > 100" redirect_too_busy
      
  4. Binden Sie die Responder-Richtlinien global.</span>

    bind responder global add_session_pol 30 next
    bind responder global delete_session_pol 10
    bind responder global check_login_pol 20
    

Anwendungsfall: Begrenzen der Anzahl der Sitzungen