Ich habe Spring-Session unter Bezugnahme auf diesen Artikel ausprobiert Insbesondere wollte ich XML-basierte Einstellungen anstelle von Anmerkungen vornehmen.
Die offizielle Dokumentation enthält eine Beispielkonfiguration in XML.
Web.xml-Einstellungen sind erforderlich. Weitere Informationen zum Festlegen finden Sie in anderen Artikeln.
Die Bean-Einstellungen basieren auf dem folgenden Blog Spring-Session-Studie.
Ich kenne die Details nicht, da sie auf Chinesisch sind, aber es gibt eine detaillierte Erklärung, einschließlich des Zeitpunkts, zu dem der Cookie generiert wird.
Ich versuche die Einstellungen im folgenden Blog Co-Genuss-Sitzung zum Namen des Frühlingsbereichs und Redis des untergeordneten Bereichs
Wenn diese Einstellung angewendet wird
CookieName
: Der Standard-Cookie-Name kann überschrieben werden
domainNamePattern
: Kann Cookies ausgeben, indem mehrere Domains als eine Domain mit einem regulären Ausdruck betrachtet werden.
Zum Beispiel wird "a.example.com", "b.example.com" zu "example.com", wenn es mit dem regulären Ausdruck unten erfasst wird.
Bestätigungscode → Wandbox
Dies bedeutet, dass Sie eine Sitzung für mehrere Server freigeben können
Bei der Suche auf Englisch scheint es gut zu sein, nach "Sitzungsreplikat" oder "Sitzungsclustering" zu suchen.
domainName
: Geben Sie den Hostnamen direkt ohne Verwendung eines regulären Ausdrucks an (Wenn domainNamePattern nicht gut funktioniert, können Sie diesen verwenden).
<property name="domainName" value=".example.com"/>
<!-- spring-Aktivieren Sie Anmerkungen in der Sitzung-->
<context:annotation-config/>
<!-- Spring-Aktivieren Sie die Sitzungsverwaltungsklasse auf der Sitzungsseite-->
<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
<!--Registrieren Sie die Redis-Client-Implementierung in Bean-->
<bean class="org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory"/>
<!--Überschreiben Sie die Standard-Cookie-Einstellungen-->
<bean class="org.springframework.session.web.http.DefaultCookieSerializer">
<property name="cookieName" value="JSESSIONID" />
<!--Domainname"."Beginnen mit-->
<property name="domainName" value=".example.com"/>
<!--Der reguläre Ausdruck ist etwas unbestätigt-->
<!-- <property name="domainNamePattern" value="^.+?\\.(\\w+\\.[a-z]+)$" /> -->
</bean>
Da gab es keine Domain in der Testumgebung Anfangs habe ich versucht, die Cookie-Domain nur mit der IP-Adresse abzurufen, aber es hat nicht gemäß dem Standard funktioniert.
4.3.2 Rejecting Cookies
To prevent possible security or privacy violations, a user agent
rejects a cookie (shall not store its information) if any of the
following is true:
* The value for the Path attribute is not a prefix of the request-
URI.
* The value for the Domain attribute contains no embedded dots or
does not start with a dot.
* The value for the request-host does not domain-match the Domain
attribute.
* The request-host is a FQDN (not IP address) and has the form HD,
where D is the value of the Domain attribute, and H is a string
that contains one or more dots.
Examples:
* A Set-Cookie from request-host y.x.foo.com for Domain=.foo.com
would be rejected, because H is y.x and contains a dot.
Kristol & Montulli Standards Track [Page 7]
RFC 2109 HTTP State Management Mechanism February 1997
* A Set-Cookie from request-host x.foo.com for Domain=.foo.com would
be accepted.
* A Set-Cookie with Domain=.com or Domain=.com., will always be
rejected, because there is no embedded dot.
* A Set-Cookie with Domain=ajax.com will be rejected because the
value for Domain does not begin with a dot.
In Bezug auf IP-Adresse und Cookie konnte ich nur die folgende Beschreibung finden
Fully-qualified host name (FQHN) means either the fully-qualified
domain name (FQDN) of a host (i.e., a completely specified domain
name ending in a top-level domain such as .com or .uk), or the
numeric Internet Protocol (IP) address of a host. The fully
qualified domain name is preferred; use of numeric IP addresses is
strongly discouraged.
Also, wenn Sie sich das Verhalten ansehen
You can set a cookie to an IP address. You just cannot wildcard it! So while -domain=>'.289.11.63.71' is invalid, ->domain=>'289.11.63.71' is not (get rid of the period before the first set of numbers).
a.example.com
und b.example.com
localhost: 8080 / application-a
und localhost: 8080 / application-b