本OAS调整了处理机制,相比较上一版本而言,效率有了显著的提高,上一版本中出现的同步登陆登出问题也得了很完善的解决,同时,如果你的网站中有多个应用系统需要整合,不再需要分别使用不同的OAS,所有的应用系统的整合,使用的OAS端都可以只有这一个,除非你的各个应用系统使用的主域名不一样,只要主域名相同,基于该主域名下的所有子域名都可共享本OAS的处理。
本OAS将会逐渐支持更多的应用系统,使得各个应用系统同步登陆登出,实现用户信息共享!
(如果是集成进CMSware2.85版本的OAS目录,就不需要做安装的工作,只需要修改配置文件即可)
安装说明:
1.将oas目录上传至你的服务器上的任何地方,目录名可任意修改,甚至可以给该目录专门指定一个二级域名。
2.修改oas.config.php文件中的设置,注意该文件中的所有需要提供URL的地方,请勿必在最后跟上反斜杠"/"。
3.$SYS_ENV['passport_key']值主要用来参与加密解密,可以设置为任意值,建议设置复杂一些,各个应用系统在跟共享OAS通信时都需要提供该值。
4.$SYS_ENV['main_domain']值比较重要,如果你的主域名为cmsware.com,请将该值设为".cmsware.com",这样OAS所发送的COOKIE信息才会在你的整个主域名下的二级域名中生效
5."应用程序配置"部份,可以根据自己的需要配置,比如你装有Discuz并希望整合Discuz就将Discuz项配好,其它项不用管。
6.如果只是想使用此OAS作为登陆处理,而并不整合其它应用系统,比如,你想在某些自已写的.php文件,或者自己的网站页面中实现获取当前CWPS登陆用户信息,如果未登陆,则显示登陆注册按钮,如果登陆了,则显示当前登陆用户信息,那么你可以按照如下方法:
在你需要的页面顶部,使用include命令将oas目录中的getuserinfo.php文件包含进来,此文件是直接有返回值的,所以可以类似这样处理:
<?php
$UserInfo = include_once("../../oas/getuserinfo.php");
if(!is_array($UserInfo)) {
//当前用户未登陆,则处理显示登陆注册按钮或是直接跳转到OAS登陆处理过程
} else {
echo "当前登陆用户的登陆信息为:<br />";
print_r($UserInfo);
}
?>
在以上示例中,需要注意,显示登陆按钮时,按钮地址应为你的OAS登陆地址,而不能直接指向CWPS,是否跳转到CWPS登陆应该由OAS来处理判断,并且,登陆按钮地址中还必须指出,当登陆成功后将跳转的页面,也就是必须加入forward参数,forward参数最好通过rawurlencode()函数处理后再传递,例如:
<?php echo "<a href='http://www.cmsware.com/oas/login.php?forward=".rawurlencode("http://www.cmsware.com")."'>登陆</a>"; ?>
注册和退出按钮同样的道理:
<?php echo "<a href='http://www.cmsware.com/oas/register.php?forward=".rawurlencode("http://www.cmsware.com")."'>注册</a>"; ?>
<?php echo "<a href='http://www.cmsware.com/oas/logout.php?forward=".rawurlencode("http://www.cmsware.com")."'>退出</a>"; ?>
应用系统整合:
(在整合前,请事先记下在未整合前应用系统的默认登陆退出的URL地址,在整合过程中出现问题时,可以用应用系统的默认登陆进入应用系统自己的后台设置)
1.PHPwind整合:
a.(2.85版本内置OAS可以忽略此步操作)上传phpwind目录中的phpwind_check.php文件到你服务器上的oas目录中,将其跟oas.config.php等文件放在同一目录下。
b.设置$SYS_ENV['phpwind']值为你的PHPwind的真实访问URL。
c.登陆你的PHPwind后台-风格插件-插件中心,在"通行证"插件上点击"插件管理"
d.是否开启通行证高为"是"
通行证私有密钥设为oas.config.php文件中所设置的$SYS_ENV['passport_key']值相同值;
将该网站做为通行证的"客户端"
通行证服务器地址设为OAS的地址,请勿遗漏最后的"/";
通行证登录地址: login.php?app=phpwind
通行证退出地址: logout.php?app=phpwind
通行证注册地址: register.php?app=phpwind
选择需要同步的积分,本版OAS不支持,所以请不要勾选任何
e.编辑你的PHPwind安装根目录下的global.php文件,在文件最后?>之前,使用include_once语句将oas目录中的phpwind_check.php文件包含进来
本文件是用来实现自动登陆登出的,所有路径勿必要设置正确,否则,你的PHPwind的同步登陆登机制将会不工作。
可以用PHPwind的R_P常量来代替PHPwind的安装根目录。
如果不太知道怎么写路径的用户,可以参照以下是几个示例:
示例一:
httpdoc/phpwind/global.php
httpdoc/oas/phpwind_check.php
在global.php,包含语句应为:
include_once R_P."../oas/phpwind_check.php";
示例二:
httpdoc/phpwind/global.php
oas/phpwind_check.php
在global.php,包含语句应为:
include_once R_P."../../oas/phpwind_check.php";
示例三:
httpdoc/phpwind/global.php
httpdoc/phpwind/oas/phpwind_check.php
在global.php,包含语句应为:
include_once R_P."oas/phpwind_check.php";
f.继续编辑global.php文件,找到以下三行(大约在139行)
$loginurl = "$passport_serverurl/$passport_loginurl?forward=".rawurlencode($db_bbsurl);
$loginouturl= "$passport_serverurl/$passport_loginouturl&forward=".rawurlencode($db_bbsurl);
$regurl = "$passport_serverurl/$passport_regurl?forward=".rawurlencode($db_bbsurl);
将其修改为以下三行:
$loginurl = "{$passport_serverurl}{$passport_loginurl}&forward=".rawurlencode($db_bbsurl);
$loginouturl= "{$passport_serverurl}{$passport_loginouturl}&forward=".rawurlencode($db_bbsurl);
$regurl = "{$passport_serverurl}{$passport_regurl}&forward=".rawurlencode($db_bbsurl);
g.将PHPwind根目下的login.php和register.php改名或直接删除,以防止用户直接在PHPwind端注册,造成用户数据不统一
在PHPwind的默认模板中,在未登陆状态时,页面默认会显示用户名登陆输入框或是浮动登陆框,请自行修改PHPwind的模板,将这些会出现直接登陆的地方全部去掉。
2.Discuz整合:
a.(2.85版本内置OAS可以忽略此步操作)上传disucz目录中的discuz_check.php文件到你服务器上的oas目录中,将其跟oas.config.php等文件放在同一目录下。
b.设置$SYS_ENV['discuz']值为你的Discuz的真实访问URL。
c.登陆你的Discuz后台-扩展设置-通行证设置
d.启用通行证设为"是";
应用程序URL地址设为OAS的地址,请勿遗漏最后的"/";
通行证私有密匙设为oas.config.php文件中所设置的$SYS_ENV['passport_key']值相同值;
验证字串有效期可参照DZ的说明,一般可以设为默认值3600
应用程序注册地址:register.php?app=discuz
应用程序登陆地址:login.php?app=discuz
应用程序退出地址:logout.php?app=discuz
积分同步选项,本版OAS不支持,所以设置为"不同步积分".
e.编辑你的Discuz安装目录中的include/common.inc.php文件,在文件最后?>之前,使用include_once语句将oas目录中的discuz_check.php文件包含进来
本文件是用来实现自动登陆登出的,所有路径勿必要设置正确,否则,你的Discuz的同步登陆登机制将会不工作。
可以用discuz的DISCUZ_ROOT常量来代替Discuz的安装根目录。
如果不太知道怎么写路径的用户,可以参照以下是几个示例:
示例一:
httpdoc/discuz/include/common.inc.php
httpdoc/oas/discuz_check.php
在common.inc.php,包含语句应为:
include_once DISCUZ_ROOT."../oas/discuz_check.php";
示例二:
httpdoc/discuz/include/common.inc.php
oas/discuz_check.php
在common.inc.php,包含语句应为:
include_once DISCUZ_ROOT."../../oas/discuz_check.php";
示例三:
httpdoc/discuz/include/common.inc.php
httpdoc/discuz/oas/discuz_check.php
在common.inc.php,包含语句应为:
include_once DISCUZ_ROOT."./oas/discuz_check.php";
f.将Discuz根目下的logging.php和register.php改名或直接删除,以防止用户直接在Discuz端注册,造成用户数据不统一;