为某政府单位设计门户平台,系统部分情节如下:
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 中传递用户名和密码,即可模拟登录,实现单点登录。
以上只是整个解决方案的概况,下面的几个章节将详细讲述操作和实施过程。之所以要写这个概况,因为本人记忆力不太好,害怕过几天把宏观结构给忘记了,那要是再回想起来可就难了。