由于项目中,需要用的单点登录,主要的思路是:系统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
 
 

转载于:https://www.cnblogs.com/volare/p/3924643.html

基于Cookie跨域的单点登录问题相关推荐

  1. .net 实现Cookie跨域共享,单点登录SSO

    实现原理:cookie是不能跨域访问的,但是在二级域名是可以共享cookie的 概念说明:站点1=a.devin.com   站点2=b.devin.com 实现步骤:1. 配置两个站点的webcon ...

  2. 深入理解跨域SSO单点登录原理与技术

    文章目录 1 SSO体系结构 1.1 SSO 1.2 体系结构 1.3 Token(令牌) 1.4 同域SSO原理分析 token的生成 token过期移除 认证流程 1.5 跨域SSO原理分析 分析 ...

  3. jsonp跨域实现单点登录,跨域传递用户信息以及保存cookie注意事项

    网站A:代码:网站a的login.html页面刷新,使用jsonp方式将信息传递给b.com的login.php中去,只需要在b.com中设置一下跨域以及接收参数,然后存到cookei即可, 注意:网 ...

  4. ajax请求头cookies中传递sid,跨域请求单点登录,登录成功,但是在controller中获取的cookie与浏览器中不一致,请大神指点一二。^_^...

    跨域请求js代码: $.ajax({ type:"post", async:false, contentType : "application/x-www-form-ur ...

  5. 完全跨域的单点登录(SSO)解决方案源码解析

    为什么80%的码农都做不了架构师?>>>    本文介绍的是一种PHP的开源SSO解决方案,可完全跨域,实现较简洁,源码地址:https://github.com/legalthin ...

  6. 绝对完全跨域统一单点登录登出

    应用场景:多个系统下同属于一个用户,当用户登录了web1系统,那么访问web2,web3. . . . 时候,用户就无需再次登录.如:淘宝与天猫,登出也如此,一个系统登出,其他系统的登录也随之失效,这 ...

  7. Session跨域及单点登录解决方案

    cookie机制 关于cookie和seesion的联系 cookie中会包含那些信息 名字,值,过期时间,路径,域 cookie会带到http请求头中发送给服务端 如果cookie没有设置过期时间的 ...

  8. kisso:java 基于 Cookie 的 SSO(单点登录) 中间件 kisso。

    源码:https://gitee.com/baomidou/kisso 示例说明:https://blog.csdn.net/q826qq1878/article/details/76179591

  9. XSS跨站脚本攻击防御和Cookie,及SSO单点登录原理

    XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入 ...

  10. cookie跨域,实现单点登录

      Cookie 跨域,实现单点登录 Table title                         最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现 ...

最新文章

  1. 图解DotNet框架系列
  2. Oracle trunc()函数的用法
  3. 剑指Offer Ⅱ 001. 整数除法(力扣剑指Offer专项突击版——整数_1)
  4. 插值方法——Lagrange插值公式
  5. MyEclipse/Eclipse中properties文件中文乱码问题解决
  6. JDK 8功能的可疑方面
  7. Ubuntu 12.04 LTS安装VMware Tools:无法找到kernel header path的问题
  8. kendo grid输入框验证方法
  9. 通过Redis的Pub/Sub实现对服务器群的监控管理
  10. mysql 事件状态enable_mysql事件 - wayhk的个人页面 - OSCHINA - 中文开源技术交流社区...
  11. 拓端tecdat|Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
  12. WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解
  13. Fiddler抓包快速入门-windows网页抓包
  14. svn的安装出现报错问题解决办法
  15. xp系统打开internet服务器,xp系统浏览器无法打开internet选项的解决方案
  16. 【sv】getenv 【import “DPI-C“】
  17. [转]Linux主机驱动与外设驱动分离思想
  18. Excel VBA:填充——FillDown方法
  19. CSS学习案例(16):网易云音乐导航栏
  20. Linux 多线程编程(三)

热门文章

  1. voronoi图代码_在Unity中实时计算Voronoi图
  2. 怎么画人像_画动画+耍杂技怎么玩?日本小哥串烧后居然爆火网络
  3. linux 程序 指定网卡,Linux socket绑定指定网卡实现负载均衡
  4. build.xml:391: javac doesn‘t support the “nativeheaderdir“ attribute
  5. 全网首发:github已经设置了令牌token,为什么还要验证用户密码
  6. 全网首发:ProGuard保持一个类名函数名需要加public
  7. 使用Rufus制作安装U盘报错,使用UltraISO成功
  8. LINUX doubango编译中prefix参数无效
  9. 编译OpenCV:cv2.cpp:23:33: fatal error: numpy/ndarrayobject.h: 没有那个文件或目录
  10. 解决办法:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系