原来一直在想要实现可伸缩WEB应用首个问题就是要解决登录状态的存储方式。经过查阅资料得出的结论就是将登录名通过加密写会到客户端cookie,然后验证是否登录就从客户端获取cookie解密然后将这个key与内存服务器中存放的登录信息对比判断。大概思路就是这样的,不知道自己想的是不是完善,如果这么实现有问题欢迎大家不吝赐教。
最近由于局方要做简易的单点登录,我也帮忙给他们提供方案。然后自己就做了一些关于cookie的实验这里记录一下。
需要解决的问题:
1、cookie跨应用共享
2、cookie的跨域共享
大家知道cookie默认情况下存储的数据只能单个应用共享,如果你设置了path指定path下的jsp才能共享。
cookie跨应用共享
cookie的跨域共享
跨域的时候如果是域名第一个字符需要是点,例如: .baidu.com。但是我们是内网的系统一般使用IP,如果是IP设置成127.0.0.1、localhost和虚拟机的ip地址 是不可以用的,需要设置为你在内网的ip地址。如果需要跨多个域,就在new一个Cookie了。
有时候我们把事情想复杂了,其实cookie共享可能不是那么麻烦,看看引用他人的一段话:
其实大致原理如此,通过在www.taobao.com 的server端提供一个获取当前域下所有cookie的 php的请求地址,然后该php获取到cookie之后将期并成 js 代码,也就是以上第二个截图所看到的。然后再在 tmall 采用 jsonp 的方式跨域加载该 js 代码,从而实现 cookie 的跨域访问。
最近由于局方要做简易的单点登录,我也帮忙给他们提供方案。然后自己就做了一些关于cookie的实验这里记录一下。
需要解决的问题:
1、cookie跨应用共享
2、cookie的跨域共享
大家知道cookie默认情况下存储的数据只能单个应用共享,如果你设置了path指定path下的jsp才能共享。
cookie跨应用共享
Cookie cookie = new Cookie(name, URLEncoder.encode(value, "utf-8"));
cookie.setMaxAge(maxAge);
cookie.setPath("/");//同一个tomcat下的所有应用可以共享
response.addCookie(cookie);
cookie的跨域共享
跨域的时候如果是域名第一个字符需要是点,例如: .baidu.com。但是我们是内网的系统一般使用IP,如果是IP设置成127.0.0.1、localhost和虚拟机的ip地址 是不可以用的,需要设置为你在内网的ip地址。如果需要跨多个域,就在new一个Cookie了。
cookie.setMaxAge(maxAge);
cookie.setPath("/");
cookie.setDomain("10.189.15.186");
response.addCookie(cookie);
有时候我们把事情想复杂了,其实cookie共享可能不是那么麻烦,看看引用他人的一段话:
其实大致原理如此,通过在www.taobao.com 的server端提供一个获取当前域下所有cookie的 php的请求地址,然后该php获取到cookie之后将期并成 js 代码,也就是以上第二个截图所看到的。然后再在 tmall 采用 jsonp 的方式跨域加载该 js 代码,从而实现 cookie 的跨域访问。