企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
Thinkphp 整合UCenter ==== 整体构思: 服务器环境为apache, 根据apache的vhost在本地虚拟出两个域名: `tpuc.la` 和 `tpuc2.la`, tpuc.la登录, tpuc2.la可以得到对应的登录信息就说明成功了 本文只是一个最简单的demo, 如果需要更多的功能, 请到官网查看api接口 项目源代码: https://github.com/xsu1991/ucenter_thinkphp3.2.3/ 同步登录流程: 在tpuc.la登录退出之后, 会回调UCenter`应用列表`里面的应用的`syslogin`, `syslogout`函数, 进行写cookie或者清除cookie, 或者其他的 操作(可自定义) # UCenter ##安装UCenter 下载请到ucenter的官网下载: http://www.comsenz.com/downloads/install/ucenter 安装到你的电脑上面 ## 安装应用 clone 例子 在apache的www目录下新建tpuc和tpuc2两个目录, 分别把代码克隆到里面 ## 配置域名环境 ### 配置vhost 打开apache的`vhost.conf`, 在结尾处加上 ```con <VirtualHost _default_:80> DocumentRoot "F:\www\tpuc" ServerName www.tpuc.la ServerAlias tpuc.la SetEnv APPLICATION_ENV "tpuc" <Directory "F:\www\tpuc"> Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost> <VirtualHost _default_:80> DocumentRoot "F:\www\tpuc2" ServerName www.tpuc2.la ServerAlias tpuc2.la SetEnv APPLICATION_ENV "tpuc2" <Directory "F:\www\tpuc2"> Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost> ``` 重启apache ### 配置hosts文件 打开系统的`hosts`文件, 在文件末尾处, 加入 ``` 127.0.0.1 www.tpuc.la 127.0.0.1 tpuc.la 127.0.0.1 www.tpuc2.la 127.0.0.1 tpuc2.la ``` ## 配置UCenter ### 增加测试用户 在用户管理里面先增加2,3个用户, 待之后测试 ### 增加测试应用 选中`应用管理` -> `添加新应用` 需要配置 test1: ``` 应用类型 -> 其它 应用名称 -> 我取为test1, 名称自取 用用的主URL -> http://tpuc.la/index.php/Ucenter/Api 通信密钥 -> 随便输入字母数字 是否开启同步登录 -> 是 是否接受通知 -> 是 ``` 点击提交, 然后把最下面的 `应用的 UCenter 配置信息`全部复制到tpuc的Ucenter模块 > Conf文件夹 > config.php, 覆盖对应的配置文件 ![20160927180730](https://raw.githubusercontent.com/xsu1991/ucenter_thinkphp3.2.3/master/pic/20160927180730.jpg) 覆盖这里的 ![20160927180932](https://raw.githubusercontent.com/xsu1991/ucenter_thinkphp3.2.3/master/pic/20160927180932.jpg) test2: ``` 应用类型 -> 其它 应用名称 -> 我取为test2, 名称自取 用用的主URL -> http://tpuc2.la/index.php/Ucenter/Api 通信密钥 -> 随便输入字母数字 是否开启同步登录 -> 是 是否接受通知 -> 是 ``` 覆盖同上 保存之后, 返回到应用管理, 确保都通信成功 ![20160927172619](https://raw.githubusercontent.com/xsu1991/ucenter_thinkphp3.2.3/master/pic/20160927172619.jpg) # 修改 如果你需要修改来自己使用, 其实只需要修改下面框住的3个文件就可以了, 其他的文件都可以不动 ![sp161024_145018](https://raw.githubusercontent.com/xsu1991/ucenter_thinkphp3.2.3/master/pic/sp161024_145018.jpg) ## config.php 是从ucenter上面复制下来的配置 ## ApiService 里面的内容大致如下, 我已经实现了一种登录和注册, 可以不动 ```php class ApiService{ // todo login_handler public function login($get, $post){ $uid = intval($get['uid']); $username = $get['username']; cookie('auth', _uc_authcode($uid . "\t" . $username, 'ENCODE'), array('prefix' => 'ucenter_')); } // todo logout_handler public function logout(){ cookie('auth', null, array('prefix' => 'ucenter_')); } } ``` 其实就是登录和注册之后的操作, 我选择的是写入cookie, 你可以根据自己的实际需求来操作 ## UcenterService 就是对外提供的接口的, 如果里面的功能满足你的需求也可以不动 我大概实现了, 3个方法, 具体看代码 `login`, `logout`, `get_cookie_info` # 测试 我主要写在了admin模块的index控制器里面 有3个主要的方法, `syslongin`, `syslogout`, `get_cookie_info` 在浏览器的地址栏输入, 把xxx补充为刚才新添加的用户的username和password http://tpuc.la/index.php?m=Admin&c=Index&a=syslogin&username=xxx&password=xxx ![sp161024_150420](https://raw.githubusercontent.com/xsu1991/ucenter_thinkphp3.2.3/master/pic/sp161024_150420.jpg) 会有`登录成功`的显示 ![sp161024_150532](https://raw.githubusercontent.com/xsu1991/ucenter_thinkphp3.2.3/master/pic/sp161024_150532.jpg) ![sp161024_150551](https://raw.githubusercontent.com/xsu1991/ucenter_thinkphp3.2.3/master/pic/sp161024_150551.jpg) # 案例 Ucenter带来的好处, 我就不多说了, 这里说一下我公司的案例吧, 统一的登录和退出界面`account.xxx.com` 其他的应用app1.xxx.com需要登录和退出的时候直接重定向到account登录和退出, 其他的应用就不需要做登录, 退出, 注册, 一个帐号全站通用