最近在整JAVA和UCENTER的东西,受限于项目架构需要,无法完全以UCENTER为中心,所以在对接过程中遇到了许多不愉快的事情。经历多番研究,终于解决了其中了两个大问题,现记录下来,以备日后查看。

一、解决email必须填写的问题

项目并不要求用户注册时填写email,但UCENTER API要求必须输入email才可以通过验证,不得已必须得修改UCENTER代码才能绕过。以下是改动的代码:

/uc_server/control/user.php 69行:

1 // NOTE: 解决email必须填写的问题
2 //if(($status = $this->_check_email($email)) < 0) {
3 //    return $status;
4 //}

二、解决用户必须手工登录1次论坛的问题

由于BBS屏蔽了DISCUZ自带的注册、登录、找密等操作,所以必须要实现单点登录。当中遇到了一个非常蛋疼的问题:主站注册的账户同步到UCENTER之后,UCENTER并不会通知其他应用,也就是说默认情况下,其他应用(包括DISCUZ在内)无法在新用户注册之后立即更新用户列表。细细研究之后发现,DISCUZ是在本地注册、登录等事件中才会与UCENTER同步。这导致了,在主站新注册的用户,无法在BBS单点登录成功——因为在BBS中根本不存在这个用户。解决的方法有两个,一是用户手工登录一次BBS,BBS自带的机制会自动将用户信息从UCENTER同步过来;二是修改DISCUZ系统代码,在单点登录请求时自动同步用户数据。在权衡了各方面因素之后,决定采用第二套方案。以下是改动的代码:

/api/uc.php 192行:

 1 // NOTE 解决用户必须手工登录1次论坛的问题
 2 $member = getuserbyuid($uid, 1);
 3
 4 if (!$member) {
 5     $init_arr = explode(',', $_G['initcredits']);
 6     $groupid = $_G['regverify'] ? 8 : $_G['newusergroupid'];
 7
 8     C::t('common_member')->insert($uid, $get['username'], md5(random(10)), $get['email'], $_G['clientip'], $groupid, $init_arr);
 9
10     $member = getuserbyuid($uid, 1);
11 }
12
13 if($member) {
14     dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);
15 }

转载于:https://www.cnblogs.com/ymind/p/4174281.html

Discuz UCenter 修改手记 - 2014.12.19相关推荐

  1. app后端设计(3)--短信,邮件,推送服务(2014.12.05更新)

    在app的后端设计中,免不了消息的推送,短信,邮件等服务,下面就个人的开发经验谈谈这方面. (1)最重要的是,各种推送一定要放在队列系统中处理,不然会严重影响api的响应时间. (2)短信方面 以前我 ...

  2. Discuz UCenter Server功能解析

    技术点 1.extract函数 将列表中的存在映射关系的key创建为变量,value作为变量值.具体可看:https://secure.php.net/manual/en/function.extra ...

  3. 用Discuz/UCenter账号实现Wifi登录认证

    如果你有一个用Discuz/UCenter构建的网站,还有自己的Wifi基站或热点,那你可以用Wiwiz为你的Wifi热点做一个入口登录页面.当 wifi终端用户连到你的热点时,打开任何网页都会先显示 ...

  4. 【跃迁之路】【674天】程序员高效学习方法论探索系列(实验阶段431-2018.12.19)...

    @(收集箱(每日一记,每周六整理))专栏 实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) ...

  5. 44-当日交易总结。(2014.12.31)

    44-当日交易总结 1.趋势抓的很好时,在低位近.在高位出.也许收益做的很不错,但是人在高度专注情况下,容易疲劳.这会导致一轮交易即使做的很好,在准备下一轮交易时会出现体力不支的现象.所以,不要熬夜, ...

  6. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    U3D笔记11:47 2016/11/30-15:15 2016/12/19 技术BLOG:http://www.unity.5helpyou.com/2373.html#comment-43108 ...

  7. Discuz! Ucenter API for JAVA jar包和测试代码

    为什么80%的码农都做不了架构师?>>> Discuz! Ucenter API for JAVA jar包和测试代码 Discuz! Ucenter API for JAVA-ja ...

  8. Interesting Finds: 2007.12.19

    Other: 我不是一名互动设计师,但我曾经是... JavaScript: Working aroung the instanceof memory leak SQLServer: SQL Serv ...

  9. Discuz 批量修改、替换帖子标题或内容

    ​​​​​​ ​​​​​​​修改标题用这个 Discuz批量修改标题 省心版(xcmodifytitle)_Discuz插件_Discuz应用中心 修改内容可以用这个 Discuz批量修改帖子内容 省 ...

最新文章

  1. re搜索字符串与find字符串不一样的结果
  2. ddr3服务器内存条维修,详解服务器中内存故障的优质解决方案
  3. 行为设计模式 - 访客设计模式
  4. English trip M1 - PC9 Where am I Teacher:Jade
  5. 如何关联php5与apche,PHP5在Apache下的两种模式的安装_php
  6. 简单分析minidump
  7. QT下assimp库的模型加载
  8. Some file crunching failed, see logs for details解决办法
  9. java 日期 英文月份_java日期月份转英文格式
  10. 浏览器/html/css面试题
  11. AD620单电源应变片测量电路分析
  12. 模拟时针--微信小程序制作
  13. Fildder拦截请求并修改请求参数
  14. nodejs http调用报错:socket hang up
  15. ** ERROR (nifti_image_write_hdr_img2): cannot open output file
  16. AB testing之两大陷阱
  17. 数学建模——多元分析、综合评价与决策
  18. 硬盘计算机类比推理,广西公务员考试类比推理每日练习(2016.11.23)
  19. P1747 好奇怪的游戏
  20. 二叉树_斜月沉沉藏海雾,碣石潇湘无限路

热门文章

  1. 基于单片机步进电机ppt答辩_基于MCU和DSP的步进电机控制技术分析
  2. 【开源项目】基于FFmpeg的PCM和RGB数据统一封装
  3. python快速排序算法循环_算法:快速排序的Python实现
  4. 信工干货||C语言中的运算符和表达式
  5. APP 文档服务器,app服务器
  6. grad在python什么模块_深度学习(Deep Learning)基础概念1:神经网络基础介绍及一层神经网络的python实现...
  7. ggplot2中显示坐标轴_R可视化08|ggplot2图层标度图层(scale layer)图例篇
  8. mysql ignore 1 lines_MYSQL使用笔记(1)
  9. ajax php 投票,PHP 实例 AJAX 投票
  10. python逻辑运算符的使用_总结Python中逻辑运算符的使用