shopnc b2b2c 集成cas 实现SSO 单点登录
来源:互联网 发布:anaconda python 使用 编辑:程序博客网 时间:2024/06/04 17:41
请先下载php 的cas客户端代码。
其实做php的sso用的比较多的是 ucenter,这方面的资料也比较多。但是,又是身不由己啊,别人家就是用cas去做sso咱们左右不了滴啊,且不轮其好坏,那么,我们就开始吧。
我们来集成 shopnc b2b2c 和 cas的sso ,其他系统万变不理其中,只要验证了cas已经登录了,就使用原系统的登录方法进行登录。
将cas登录作为一个可开启关闭的功能,关闭cas,就使用原始系统自带的登录,开启cas,就使用cas登录。
首先,找到shopnc的 根目录下的core/shopnc.php
在函数自动加载的位置添加下面的代码,如果不添加的话,shopnc会一直报错说找不到PHP cas客户端相关的类。
require_once(BASE_DATA_PATH.DS.'api'.DS.'cas'.DS.'CAS'.DS.'Autoload.php');
加了之后代码如下:
if(function_exists('spl_autoload_register')) {require_once(BASE_DATA_PATH.DS.'api'.DS.'cas'.DS.'CAS'.DS.'Autoload.php');//casspl_autoload_register(array('Base', 'autoload'));} else {function __autoload($class) {return Base::autoload($class);}}
然后,我们在配置文件最后面添加配置cas应该有的参数,如下:
//cas 配置$config['cas']=array(//SHOP'open'=>1,//是否开启cas登陆'cas_port'=>80,//cas 端口,不能加引号'cas_host'=>'127.0.0.1',//cas 服务器地址'cas_context'=>'cas',//'cas_version'=>'2.0',//1.0/2.0/3.0//版本'cas_login_url'=>'http://127.0.0.1:80/cas/login',//cas 登陆地址'cas_register_url'=>'http://127.0.0.1:80/register',//注册地址);
再然后,我们在shop/control.php 的 control类 中添加如下函数
function cas_login(){if($cas_config['open']==1 && $_SESSION['is_login'] !='1'){//cas 登陆 require_once (BASE_DATA_PATH.DS.'api'.DS.'cas'.DS.'CAS.php'); phpCAS::setDebug(); phpCAS::client($cas_config['cas_version'],$cas_config['cas_host'],$cas_config['cas_port'],$cas_config['cas_context']); phpCAS::setNoCasServerValidation(); if(phpCAS::checkAuthentication()) { $username = phpCAS::getUser(); //进行shopnc自己的登录,说白了就是 创建 session,与member_model.php里的creatSession一样,这样就能与整个系统完美融合了。 $model_member = Model('member'); $member_info = $model_member->infoMember(array('member_name'=>trim($username))); if(empty($member_info)){ $member_info = $model_member->infoMember(array('member_mobile'=>trim($username)));//自己新增的字段<span style="font-family: Arial, Helvetica, sans-serif;">,新版本好像有了,不知字段名称是否一样</span> } if(empty($member_info)){ $member_info = $model_member->infoMember(array('member_email'=>trim($username)));//自己新增的字段,新版本好像有了 } if(empty($member_info)) {//不存在就注册,我喜欢在本地保留一份数据,保证系统数据完整及方便很多操作 $register_info = array(); $register_info['username'] = $username; $register_info['mobile'] = $username; $member_info = $model_member->register($register_info,$require_password='false'); } $model_member->createSession($member_info);//到这里,我们自己的系统就登陆了。 } }}
基本上,根目录下 shop/ 的其他 控制器都会继承到 control类,例如HomeControl等
所以接下来,我们只需要在前台页面继承的控制器 例如HomeControl的 __contruct函数中引用:
function __contruct{$this->cas_login();//这里调用之后,用户就登录了}
大功告成。
欢迎 加入
php交流群1:201923866
php交流群2:370648191
我是群主哦~
www.linglingtang.com 零零糖
0 0
- shopnc b2b2c 集成cas 实现SSO 单点登录
- CAS实现SSO单点登录
- CAS 实现单点登录SSO
- CAS单点登录(SSO)
- 单点登录sso cas
- CAS SSO单点登录
- CAS sso单点登录
- cas sso 单点登录
- 使用CAS实现SSO(单点登录)
- CAS实现SSO单点登录原理
- SSO---CAS实现单点登录的HelloWorld
- CAS实现SSO单点登录原理
- CAS实现单点登录(SSO)
- CAS实现SSO单点登录原理
- CAS实现SSO单点登录原理 .
- CAS实现SSO(单点登录)
- CAS实现SSO单点登录原理
- CAS实现SSO单点登录原理
- 第四章
- Android (shape,gradient)使用总结
- Codeforces Beta Round #1 B Spreadsheets
- IndicatorTabBar——可滑动的带指示条的TabBar
- js+java+spring国际化
- shopnc b2b2c 集成cas 实现SSO 单点登录
- Dev GridControl
- 为什么不要在构造函数中调用虚函数
- MongoDB介绍和安装
- Webx中AutoConfig使用
- android Volley网络框架
- window.clearInterval与window.setInterval的用法
- Accelerated C++ day2
- OGRE骨骼动画与四元数旋转