discuz社区与java web的钉钉手机版整合(一)

本文介绍了如何将Discuz社区、Java Web应用与钉钉手机版进行整合,实现同步登录。首先,通过修改Discuz的源码,创建新的userlogin1()方法以接受钉钉传递的key和uid进行登录验证。接着,详细阐述了如何使用username绕过Discuz的登录验证,涉及数据库操作和PHP函数的查找与应用。最后,总结了关键步骤,包括理解C::t()函数、查找相关数据库操作函数以及自定义代码。
摘要由CSDN通过智能技术生成

在前面的博文中,我已经完成了discuz与java web在浏览器上的整合,大概原理是利用ucernter作为中介,在java web中登录时,调用uc_user_login()登录,这时候就会返回一段js代码把cookie写在浏览器中,使得两个系统公用相同的cookie以达到同步登录的目的。

我们都知道,很多公司都用使用阿里的钉钉作为办公通讯工具。那么这篇将介绍如何使用融合discuz,java web,钉钉的同步登录!

         一、首先先看看钉钉与discuz的整合:

由于钉钉的微应用是根据url去访问的,所以原理是:在url给discuz传送key值和uid的值,discuz服务端在获取key值后知道是钉钉应用的访问,再根据uid判断是哪位用户登录。那么我们需要做的是

1.如何绕开discuz的登录验证。

首先,我们先了解discuz的源码目录框架,在上一篇我转载了别人介绍的目录框架。找到根目录的menber代码:

<?php

/**
 *      [Discuz!] (C)2001-2099 Comsenz Inc.
 *      This is NOT a freeware, use is subject to license terms
 *
 *      $Id: member.php 24411 2011-09-19 05:09:03Z monkey $
 */

define('APPTYPEID', 0);
define('CURSCRIPT', 'member');

require './source/class/class_core.php';

$discuz = C::app();

$modarray = array('activate', 'clearcookies', 'emailverify', 'getpasswd',
	'groupexpiry', 'logging', 'lostpasswd',
	'register', 'regverify', 'switchstatus');


$mod = !in_array($discuz->var['mod'], $modarray) && (!preg_match('/^\w+$/', $discuz->var['mod']) || !file_exists(DISCUZ_ROOT.'./source/module/member/member_'.$discuz->var['mod'].'.php')) ? 'register' : $discuz->var['mod'];

define('CURMODULE', $mod);

$discuz->init();
if($mod == 'register' && $discuz->var['mod'] != $_G['setting']['regname']) {
	showmessage('undefined_action');
}


require libfile('function/member');
require libfile('class/member');
runhooks();


require DISCUZ_ROOT.'./source/module/member/member_'.$mod.'.php';

?>
粗略地阅读代码,我们发觉,他是根据mod值来判断用户的操作是login,并且引入function/member,class/class_member和/source/module/member/member_ligin.php。于是我们找啊找,确定class_member.php的on_login()函数是用来处理登录的函数。问题来了,这一大 篇幅的东东怎样知道他如何运行?这里我有一个小技巧:利用showmessage()函数来作为断点判断它运行到哪一步,这样就能很好地了解它的运行逻辑了。代码如下:自己对比源代码(discuzX2.5)找亮点

function on_login() {
		
		global $_G;
		if($_G['uid']) {
			$referer = dreferer();
			$ucsynlogin = $this->setting['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : '';
			$param = array('username' => $_G['member&#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值