由於項目中,需要用的單點登錄,主要的思路是:系統1:用戶名密碼-->寫入Cookie-->其他系統讀取Cookie。
1、在同一個服務器下的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。
2、跨域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
