![](/img/trans.png)
[英]Share Current User Data Between Subdomains on Google App Engine for Java
[英]Share session data between 2 subdomains
我使用tomcat 7.0.6與jdk 1.6.0_22
是否可以使用公共子域(例如a.mydomain.com和b.mydomain.com)在2個不同的域之間共享會話數據?
使用默認的java servlet,a.mydomain.com和b.mydomain.com會獲得不同的會話,但是無法為mydomain.com中的所有子域創建共享會話嗎?
問題是我不直接控制commen子域(mydomain.com)所以我不能從mydomain.com提供任何servlet
將有問題的webapp的<Context>
元素的sessionCookieDomain
屬性設置為.mydomain.com
(注意前導點,這非常重要)。 這將允許webbrowser在所有子域之間共享cookie。
如果您實際上有多個webapp上下文並且您想要在它們之間共享會話,那么您還需要將有問題的webapps的<Context>
元素的sessionCookiePath
屬性設置為/
。
簡而言之:
<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">
對於Tomcat 6用戶:請注意,這是在Tomcat 6.0.27中引入的。 對於那些無法升級的人,您需要一個Valve
來修改cookie域,最后結合/conf/server.xml
中<Connector>
元素中的emptySessionPath
屬性,以獲得您有多個webapp上下文的情況我想分享會議。
Servlet Spec 3.0(這是Tomcat 7支持的)通過在SessionCookieConfig上調用setDomain來實現這一點。
詳情請訪問: http : //download.oracle.com/javaee/6/api/javax/servlet/SessionCookieConfig.html
您可以使用ServletContextListner在webapp初始時以編程方式獲得SessionCookieConfig - 或者您應該能夠在web.xml中將其設置為值。
您可以使用cookie創建自己的會話實現。 使用cookie和服務器端數據庫或文件處理會話(在大多數服務器端語言中)。 您創建一個令牌(在時間戳上使用md5)並將其與所有會話變量一起保存在文件或數據庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.