因为项目中,须要用的单点登陆,主要的思路是:系统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
