公司现在三个系统,购买的cms,上面有个会员系统, 单独的blog系统,discuzNT。其中论坛是遗留系统里面有用户信息,cms的会员系统也有遗留的用户信息,blog准备开发,决定弄个开源的算了,是在没时间开发blog。三个数据库,三张user表,想要登陆一次可以进入三个系统,也就是单点登录。大家有好的解决方案么?
我看过了cas,josso,还是有些不明白。
积分只有36,拿出35出来做奖励。^_^
如果都是java的系统,可以用yale cas之类的
如果不是的话,可以根据sso的原理,自己做一个跨语言和平台的简单sso:
原理如下:
有A B C D。。。多个应用系统(asp php j2ee asp.net都成,可以使用session和cookie,可以访问网络),实现统一认证方式。实现一个新的web应用AU(也可以利用已有的应用中的验证模块。)
当用户要访问A应用时,A系统检测session和cookie,没有验证的话,跳转到AU系统的登录界面,同时将要访问的A系统的url作为参数传给AU系统。
AU系后提供一个注册\登陆的页面,一个对外的接口。
用户可以在此登陆,登陆后生成一个标识(ticket),跳转到用户之前要访问的应用A的路径,同时将标识作为参数传过去。A应用里通过这个标识,访问AU系统的对外接口,传入唯一标识可以拿到此用户的信息,AU系统清除ticket,应用A存入用户信息到session/cookie中,即用户已经可以使用应用A了,其他过程类似。 如果使用ticket去AU系统拿不到用户信息,说明用户在AU系统登录失败,调整出错或是AU系统重新登陆。
CAS就很方便就能搞定了
基本思路就是做一个SSO,
在applicationContext中存着你的异源数据库信息,
然后配置你的 三个系统的登陆Url 直接redirect到这个SSO的登入首页,
后台判断 用户填的地址,去找对应的 数据源,
然后再去后台验证是否用户密码正确,正确的话,
直接在后台redirect到 不同的系统中去。
我想你的问题可以分成两个方面来说
1、如何将三张表合到一起,如果三张数据表都不一样怎么可能同时登陆还可以进行其它操作呢
2、在整合三张表的基础上再来处理统一入口问题,这个就像楼上的说的可以使用session和cookie来处理,
DZ中当一个用户登陆后会向其它的系统发送登陆信息包括用户名、ID等,通过设置各自系统的session和cookie值来确定同步,如果是登出,也会向其它系统发送登出信息
这样就可以实现多个系统同步了
将用户信息存放在session中,登录各个系统时,各自进行验证
用CAS实现,很方便的.
用CAS实现,很方便的.
cookie
基于web service吧,三个系统都基于service来登录,用户数据库的访问在一个地方,就可以实现单点登录了
实现方法有多种
1用户数据库的访问在一个地方
2用户登录同步
3 用CAS实现
。。。。
单点登录的最大难题在与客户端存储