因爲項目中,須要用的單點登陸,主要的思路是:系統1:用戶名密碼-->寫入Cookie-->其餘系統讀取Cookie。
一、在同一個服務器下的Cookie共享
@Component("userLoginAction") @Namespace("/userLogin") @ParentPackage("json-default") public class UserLoginAction extends ActionSupport{ @Action(value="saveCookie",results={ @Result(name=SUCCESS,location="/WEB-INF/page/success.ftl") }) public String saveCookie(){ Cookie cook=new Cookie("userName","lisi"); cook.setPath("/"); cook.setMaxAge(-1); ServletActionContext.getResponse().addCookie(cook); return SUCCESS; } }
cook.setPath("/");設置在同一個webapp下
cook.setMaxAge(-1);設置關閉瀏覽器後清除Cookie。
二、跨域Cookie共享,首先這裏說的Cookie跨域不是跨多域,而是跨子域。
在host文件中設置本地域名。
package cn.action; import javax.servlet.ServletContext; import javax.servlet.http.Cookie; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.springframework.stereotype.Component; import com.opensymphony.xwork2.ActionSupport; @Component("userLoginAction") @Namespace("/userLogin") @ParentPackage("json-default") public class UserLoginAction extends ActionSupport{ @Action(value="saveCookie",results={ @Result(name=SUCCESS,location="/WEB-INF/page/success.ftl") }) public String saveCookie(){ Cookie cook=new Cookie("userName","lisi"); cook.setPath("/"); cook.setMaxAge(-1); cook.setDomain(".demo.com"); ServletActionContext.getResponse().addCookie(cook); return SUCCESS; } }
cook.setDomain(".demo.com");設置的共享子域名 .demo.com
就ok了。在瀏覽器中能夠查看到該Cookie