


So lösen Sie das Problem der Sitzungskoexistenz zwischen Domänennamen unter Yii2
In diesem Artikel wird hauptsächlich die Lösung für die domänenübergreifende Koexistenz unter Yii2 vorgestellt. Der Inhalt ist ziemlich gut und wird als Referenz dienen.
Ich habe vorhin über sitzungsbezogene Konfigurationen gesprochen. Ich glaube, dass viele Entwicklungsfreunde darauf gestoßen sind eingeloggt, und die zugehörige Website ist ebenfalls eingeloggt. Es gibt zwei Situationen: eine zwischen 9streets.cn und a.9streets.cn und die andere zwischen a.com und b.com. Ich habe die Handhabungsmethoden in den letzten Tagen zusammengefasst.
Ob es sich um einen First- und Second-Level-Domainnamen oder eine Cross-Domain unter verschiedenen Domainnamen handelt, zwei Punkte müssen erreicht werden:
Die Der Client greift auf dieselbe Sitzungs-ID zu.
Der Speicherort der Sitzungsdaten, auf die von Servern zugegriffen wird, die allen Domänennamen entsprechen, muss konsistent sein.
1. Der Zugriff auf die gemeinsame Sitzungs-ID erfolgt hauptsächlich durch Schreiben der aktuellen Sitzungs-ID in das Cookie.
Auf Cookies kann nicht unter verschiedenen Domänennamen zugegriffen werden. Wir benötigen beim Zugriff und indem Sie festlegen, dass sich der Benutzer im Hintergrund anmeldet, legen Sie den Domänennamen fest, für den die Anmeldeinformationen freigegeben werden müssen. Wenn es sich um einen 1- oder 2-stufigen Domänennamen handelt, setzen Sie das Cookie direkt auf den Hauptdomänennamen, zum Beispiel:
setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".a.com");
Vielleicht fragen Sie sich: Was ist, wenn sie unterschiedliche Domainnamen haben? Es handelt sich um eine einfache Lösung mit P3P-Technologie. Das Implementierungsprinzip besteht darin, dass das y.com-Programm beim Zugriff auf die Website x.com die y.com-Datei zum Schreiben des Session-ID-Werts auslöst, der Session-ID-Wert abgerufen werden kann und dann die Seesion Der Wert wird in der Datenbank gespeichert und der Wert der Sitzungs-ID ist ausreichend. Dies erfordert, dass die Programmdateien in y.com domänenübergreifend zugänglich sein müssen. Standardmäßig können Browser keine domänenübergreifenden Cookies setzen. Sie müssen den p3p-Header hinzufügen. Zur entsprechenden PHP-Datei hinzufügen: header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
2. Die Implementierungsmethode des konsistenten Speicherorts von Sitzungsdaten
Die Sitzungsdaten werden in der tmp-Datei des Servers gespeichert Standardmäßig liegt es in Form einer Datei vor, anstatt im Speicher des Servers gespeichert zu werden. Hier müssen wir es so ändern, dass es in allen Domänen zugänglich ist. Datenbankspeicherung, Dateispeicherung und Speicherspeicherung werden online eingeführt. Wenn eine Datenbank zum Speichern von Sitzungsdaten verwendet wird und die Website eine große Anzahl von Besuchen hat, wird das Lesen und Schreiben von SESSION häufig auf der Datenbank ausgeführt, und die Effizienz wird erhöht Sie können das Vorhandensein von Speicher erheblich reduzieren. Die folgende Sitzung.rar stellt ein Beispiel für die Dateninventursitzung vor.
Um dieses Problem unter yii2 zu lösen, lautet die erfolgreiche Konfiguration gemäß den im Internet gefundenen Tutorials wie folgt:
Konfigurieren Sie in main.php im Konfigurationsordner des Frontends
$host = explode('.', $_SERVER["HTTP_HOST"]); if (count($host) > 2) { define('DOMAIN', $host[1] . '.' . $host[2]); } else { define('DOMAIN', $host[0] . '.' . $host[1]); } define('DOMAIN_HOME', 'www.' . DOMAIN); define('DOMAIN_USER_CENTER', 'man.' . DOMAIN); define('DOMAIN_API', 'api.' . DOMAIN); define('DOMAIN_EMAIL', 'mail.' . DOMAIN); define('DOMAIN_LOGIN', 'login.' . DOMAIN); define('DOMAIN_IMG', 'img.' . DOMAIN);
Dann konfigurieren Sie Benutzer und Sitzung:
'user' => [ 'enableAutoLogin' => true, 'identityCookie' => ['name' => '_identity', 'httpOnly' => true, 'domain' => '.' . DOMAIN], ], 'session' => [ 'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0], 'timeout' => 3600, ],
Dies ist im Benutzer und in der Sitzung Ich habe die Domain des Konfigurationselements aufgeschrieben, zum Beispiel: 'domain'=>'.baidu.com', sodass keine Beurteilung erforderlich ist
Das Obige ist der gesamte Inhalt Ich hoffe, dass dieser Artikel für alle hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Probleme im Zusammenhang mit der Verwendung von JQuery im Yii-Framework
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem der Sitzungskoexistenz zwischen Domänennamen unter Yii2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Das Problem wurde im Springboot-Projekt-Produktions-Session-Out-Timeout gefunden: In der Testumgebung wurde der Session-Out durch Ändern der application.yaml konfiguriert, nachdem die Session-Out-Konfiguration überprüft wurde In Kraft trat, wurde die Ablaufzeit für die Veröffentlichung in der Produktionsumgebung direkt auf 8 Stunden festgelegt. Allerdings habe ich am Mittag die Rückmeldung von Kunden erhalten, dass die Projektablaufzeit kurz eingestellt wurde. Wenn eine halbe Stunde lang keine Aktion ausgeführt wird, läuft die Sitzung ab und erfordert wiederholte Anmeldungen. Lösen Sie das Problem der Handhabung der Entwicklungsumgebung: Das Springboot-Projekt verfügt über integriertes Tomcat, sodass der in application.yaml im Projekt konfigurierte Sitzungsausgang wirksam ist. Produktionsumgebung: Die Produktionsumgebung ist freigegeben

Ein Sitzungsfehler wird normalerweise durch den Ablauf der Sitzungslebensdauer oder das Herunterfahren des Servers verursacht. Die Lösungen: 1. Verlängern Sie die Lebensdauer der Sitzung. 3. Verwenden Sie Cookies. 4. Aktualisieren Sie die Sitzung.

Lösung des domänenübergreifenden Problems von PHPSession Bei der Entwicklung der Front-End- und Back-End-Trennung sind domänenübergreifende Anforderungen zur Norm geworden. Wenn es um domänenübergreifende Probleme geht, nutzen wir in der Regel Sitzungen und verwalten diese. Aufgrund von Richtlinieneinschränkungen für den Browserursprung können Sitzungen jedoch standardmäßig nicht über Domänen hinweg gemeinsam genutzt werden. Um dieses Problem zu lösen, müssen wir einige Techniken und Methoden verwenden, um eine domänenübergreifende gemeinsame Nutzung von Sitzungen zu erreichen. 1. Die häufigste Verwendung von Cookies zum domänenübergreifenden Teilen von Sitzungen

Problem: Heute ist in unserem Projekt ein Zeitüberschreitungsproblem aufgetreten, und Änderungen an den application.properties von SpringBoot2 wurden nie wirksam. Lösung: Die server.*-Eigenschaften werden verwendet, um den eingebetteten Container zu steuern, der von SpringBoot verwendet wird. SpringBoot erstellt eine Instanz des Servlet-Containers mithilfe einer der ServletWebServerFactory-Instanzen. Diese Klassen verwenden server.*-Eigenschaften, um den kontrollierten Servlet-Container (Tomcat, Jetty usw.) zu konfigurieren. Wenn die Anwendung als WAR-Datei auf einer Tomcat-Instanz bereitgestellt wird, gelten die server.*-Eigenschaften nicht. Sie gelten nicht,

1. Implementieren der SMS-Anmeldung basierend auf der Sitzung 1.1 Ablaufdiagramm der SMS-Anmeldung 1.2 Implementieren des Sendens eines SMS-Bestätigungscodes Beschreibung der Front-End-Anfrage: Beschreibung der Anfragemethode POST-Anfragepfad/Benutzer/Code-Anfrageparameter Telefon (Telefonnummer) Rückgabewert Keine Back-End-Schnittstelle Implementierung: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1 Überprüfen Sie die Mobiltelefonnummer, wenn

JavaScript-Cookies Die Verwendung von JavaScript-Cookies ist die effektivste Möglichkeit, Präferenzen, Käufe, Provisionen und andere Informationen zu speichern und zu verfolgen. Informationen, die für ein besseres Besuchererlebnis oder Website-Statistiken benötigt werden. PHPCookieCookies sind Textdateien, die auf Client-Computern gespeichert und zu Nachverfolgungszwecken aufbewahrt werden. PHP unterstützt transparent HTTP-Cookies. Wie funktionieren JavaScript-Cookies? Ihr Server sendet einige Daten in Form eines Cookies an den Browser Ihres Besuchers. Browser können Cookies akzeptieren. Falls vorhanden, wird es als reiner Textdatensatz auf der Festplatte des Besuchers gespeichert. Wenn ein Besucher nun eine andere Seite der Website erreicht

Vue ist ein beliebtes JavaScript-Framework zum Erstellen moderner Webanwendungen. Bei der Entwicklung von Anwendungen mit Vue müssen Sie häufig mit verschiedenen APIs interagieren, die sich oft auf verschiedenen Servern befinden. Wenn eine Vue-Anwendung auf einem Domänennamen ausgeführt wird, kann sie aufgrund von domänenübergreifenden Sicherheitsrichtlinienbeschränkungen nicht direkt mit der API auf einem anderen Domänennamen kommunizieren. In diesem Artikel werden verschiedene Methoden für domänenübergreifende Anfragen in Vue vorgestellt. 1. Verwenden Sie einen Proxy. Eine gängige domänenübergreifende Lösung ist die Verwendung eines Proxys

Wenn Sie eine PHP-Sitzung (Sitzung) verwenden, werden Sie manchmal feststellen, dass die Sitzung in einer Datei normal gelesen werden kann, in einer anderen Datei jedoch nicht. Dies kann Sie verwirren, da Sitzungsdaten in der gesamten Anwendung gemeinsam genutzt werden sollen. In diesem Artikel wird erläutert, wie Sie PHP-Sitzungsdaten in mehreren Dateien korrekt lesen und schreiben.
