您的位置:首页 > 其它

基于Cookie跨域的单点登录问题

2014-08-20 15:03 302 查看
由于项目中,需要用的单点登录,主要的思路是:系统1:用户名密码-->写入Cookie-->其他系统读取Cookie。

1、在同一个服务器下的Cookie共享


@Component("userLoginAction")
@Namespace("/userLogin")
@ParentPackage("json-default")
publicclassUserLoginActionextendsActionSupport{
@Action(value="saveCookie",results={
@Result(name=SUCCESS,location="/WEB-INF/page/success.ftl")
})
publicStringsaveCookie(){
Cookiecook=newCookie("userName","lisi");
cook.setPath("/");
cook.setMaxAge(-1);
ServletActionContext.getResponse().addCookie(cook);
returnSUCCESS;
}
}


cook.setPath("/");设置在同一个webapp下

cook.setMaxAge(-1);设置关闭浏览器后清除Cookie。

2、跨域Cookie共享,首先这里说的Cookie跨域不是跨多域,而是跨子域。
在host文件中设置本地域名。


packagecn.action;

importjavax.servlet.ServletContext;
importjavax.servlet.http.Cookie;

importorg.apache.struts2.ServletActionContext;
importorg.apache.struts2.convention.annotation.Action;
importorg.apache.struts2.convention.annotation.Namespace;
importorg.apache.struts2.convention.annotation.ParentPackage;
importorg.apache.struts2.convention.annotation.Result;
importorg.springframework.stereotype.Component;

importcom.opensymphony.xwork2.ActionSupport;

@Component("userLoginAction")
@Namespace("/userLogin")
@ParentPackage("json-default")
publicclassUserLoginActionextendsActionSupport{
@Action(value="saveCookie",results={
@Result(name=SUCCESS,location="/WEB-INF/page/success.ftl")
})
publicStringsaveCookie(){
Cookiecook=newCookie("userName","lisi");
cook.setPath("/");
cook.setMaxAge(-1);
cook.setDomain(".demo.com");
ServletActionContext.getResponse().addCookie(cook);
returnSUCCESS;
}
}


cook.setDomain(".demo.com");设置的共享子域名.demo.com
就ok了。在浏览器中可以查看到该Cookie




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: