是否可能跨域共享Session信息或者怎么实现单点登录?

ynduanlian 2014-12-19 08:36:52
一个网站下挂接了多个模块,这些模块可能使用独立的二级域名,在不同的服务器上。怎么样能让用户只需登录一次,就能在访问这些模块时都是已登录的状态?
...全文
1209 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hailshao 2015-02-05
  • 打赏
  • 举报
回复
把A网站的sessionId通过url传递到另外一个网站B,B网站取到sessionid再通过webservice去A网站校验,取得用户名等需要的信息,在B网站调用登陆接口。更安全一点是B网站只处理http头的refer为A网站的请求
呆饿猪 2015-02-04
  • 打赏
  • 举报
回复
引用 10 楼 shrimpma 的回复:
用Redis+cookie的方法实现 比如 a.xx.com, b.xx.com 1.用户登陆信息写人session,session保存在redis中, cookie 写入.xx.com 2.由于 cookie是http协议的一部分 这样每个站点下就有会话信息了
可以
shrimpma 2015-01-21
  • 打赏
  • 举报
回复
用Redis+cookie的方法实现 比如 a.xx.com, b.xx.com 1.用户登陆信息写人session,session保存在redis中, cookie 写入.xx.com 2.由于 cookie是http协议的一部分 这样每个站点下就有会话信息了
最勇敢的鸟 2015-01-07
  • 打赏
  • 举报
回复
用最简单的memcached+cookie就可以解决,不用搞复杂了
吟风笛 2014-12-29
  • 打赏
  • 举报
回复
我的建议是用redis做session共享或者用memcatch 做session共享
OhSunshineJava 2014-12-29
  • 打赏
  • 举报
回复
memcache sso
感同深受 2014-12-28
  • 打赏
  • 举报
回复
不妨将认证成功的ID写入cookie中,当跳转到二级域名下时 读取顶级域名下的cookie信息,将认证ID送入登陆服务器进行认证,成功后将用户信息保存到session。
jiangbai333 2014-12-23
  • 打赏
  • 举报
回复
出于安全性原因,session不能共享!
「已注销」 2014-12-22
  • 打赏
  • 举报
回复
你了解下CAS
jianhuiweifeng 2014-12-19
  • 打赏
  • 举报
回复
用redis集群做session共享,然后在tomcat的context配置文件中加上 <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/> <Manager className="com.radiadesign.catalina.session.RedisSessionManager" host="192.168.1.190" port="6379" database="0" maxInactiveInterval="3600" /> 就可以做session共享。
ynduanlian 2014-12-19
  • 打赏
  • 举报
回复
是的,也可以简化到下面的问题: 两个服务器上的网站共享同一个数据库,所以我想实现这样的功能: 如果用户在A站已经登录,那么当它通过点击A站上的B站链接进入B站时,不再需要验证。由于AB两站是两个不同的IIS进程,无法共享同一Session,所以我只能在链接中把用户的用户名密码传递到B站,比如在A站页面中这样写B站链接: http://serverB?UID=X&PWD=Y 但这样的话,即便我把密码Y加密码,某个人看到这个链接后,虽然他不知道真实的用户密码,在浏览器地址栏输入后也可以登录B子网站,这个有没有什么办法来解决这个问题?
oicq323 2014-12-19
  • 打赏
  • 举报
回复
说白了就是跨服务器、跨程序的数据传递吧~~从这个角度去想想。。。我是来帮顶的

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧