为某政府单位设计门户平台,系统部分情节如下:
1 门户平台主体部分采用JSP+SSH框架开发,开发工具为MyEclipse8.5,后台数据库为Oracle 10g,项目名称为dbgp,本地测试路径为
2 论坛模块则购买康盛的Discuz 7.2产品,运行配置环境为WampServer2.0c(包括了Apache、MySql、PHP),开发工具为Zend Studio 7.2,项目名称为dbgp-bbs,本地测试路径为http://localhost/dbgp/bbs/。
由此,引出了下面两个问题:
1 如何使门户平台的Oracle中的用户资料与论坛系统MySql中的用户资料保持同步(不求完全同步,但至少登录名和登录密码要同步)?
2 在门户平台中单点登录到论坛中,中间省略掉用户重复登录论坛的麻烦。
经过技术研究和借鉴网络上各种各样的成功经验和失败教训,得到了下面这种比较适合项目需要的解决方案。
1 针对用户资料同步
在dbgp-bbs项目中用PHP创建一个WebService,此WebService服务中提供保存用户、删除用户等接口方法;
当在门户平台中注册一个新用户时,把用户资料保存到Oracle数据库后,调用dbgp-bbs中的WebService服务,通过此WebService服务把用户资料保存到论坛系统的MySql数据库中。
流程图如下所示:
2 针对单点登录
解决方案一
在dbgp-bbs论坛项目中创建一个php页面(usersynclogin1.php),里面封装了Discuz 论坛系统的关键登录代码(其实就是login.php中的部分代码)。在dbgp门户平台中连接打开此页面,同时在url中传递用户名和密码,即可模拟登录,实现单点登录。
解决方案二
在dbgp-bbs论坛项目中创建一个php页面(usersynclogin2.php),把login.html中的form登录域元素拷贝过来,并设置成隐藏模式,并在最后通过js代码自动提交登录动作。在dbgp门户平台中连接打开此页面,同时在url中传递用户名和密码,即可模拟登录,实现单点登录。
以上只是整个解决方案的概况,下面的几个章节将详细讲述操作和实施过程。之所以要写这个概况,因为本人记忆力不太好,害怕过几天把宏观结构给忘记了,那要是再回想起来可就难了。