资讯专栏INFORMATION COLUMN

Joomla3 二次开发 增加discuz的登陆验证方式

Alan / 3214人阅读

摘要:初次学习,多多指教。补充还有创建分组的数据表名叫在这里创建跟关联的数据否则是无法登陆的。

  

Joomla3二次开发 要合并discuz的会员账户信息到Joomla3系统中,这时候要修改一下Joomla3的PlgAuthentication的Joomla插件来添加一个discuz的验证方式

这个与密码验证相关的文件的位置是 (注意是Joomla3.x 其它版本暂时没研究) :

JOOMLA/plugins/authentication/joomla/joomla.php

首先要把discuz的ucenter_members表的数据 导入到 Joomla的users表 具体的自己做吧

关于密码的格式 我的处理方式是把 discuz的拼凑成 Joomla那种字符串的 :

$uc$/password/salt

这种样式 其中password跟salt都是discuz的数据

Joomla关于会员信息的表只有两张 一个users 还有一个user_usergroup_map(暂时不管)

所以导入时候 只要把ucenter_members改造一下就好了 自行导入到joomla的users表吧

要修改的部分是

    // Get a database object
    $db    = JFactory::getDbo();
    $query = $db->getQuery(true)
        ->select("id, password")
        ->from("#__users")
        ->where("username=" . $db->quote($credentials["username"]));

    $db->setQuery($query);
    $result = $db->loadObject();

后面开始

        //导出discuz会员表 ucenter 关于discuz的password跟salt处理方式是
        //组合成为 $uc$/password/salt 后面通过"/"切割 方便使用discuz的公式验证密码
        if( substr( $result->password, 0 , 4) == "$uc$")
        {
            // discuz具体的验证方法是 $saltpassword = md5( md5( $plaintext_password ) . $salt);
            $str = explode( "/",  $result->password);
            $match = md5( md5( $credentials["password"]) . $str[2]) === $str[1] ? true : false;

        }
        else if (substr($result->password, 0, 4) == "$2y$")
        {
            // BCrypt passwords are always 60 characters, but it is possible that salt is appended although non standard.
            $password60 = substr($result->password, 0, 60);

            if (JCrypt::hasStrongPasswordSupport())
            {
                $match = password_verify($credentials["password"], $password60);
            }
        }
        elseif (substr($result->password, 0, 8) == "{SHA256}")
        {
            // Check the password
            $parts    = explode(":", $result->password);
            var_dump( $parts);
            $crypt    = $parts[0];
            $salt    = @$parts[1];
            $testcrypt = JUserHelper::getCryptedPassword($credentials["password"], $salt, "sha256", false);

            if ($result->password == $testcrypt)
            {
                $match = true;
            }
        }
        else
        {
            // Check the password
            $parts    = explode(":", $result->password);
            var_dump( $parts);
            $crypt    = $parts[0];
            $salt    = @$parts[1];

            $testcrypt = JUserHelper::getCryptedPassword($credentials["password"], $salt, "md5-hex", false);

            if ($crypt == $testcrypt)
            {
                $match = true;
            }
        }

这样应该差不多了,我继续研究看看还有什么要做的。初次学习joomla ,多多指教。

补充 还有创建分组的数据 表名叫 user_usergroup_map

在这里创建 user 跟 group 关联的数据 否则是无法登陆的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/20641.html

相关文章

  • 第一个小程序(Discuz! + 微信小程序)

    摘要:微信小程序开发官方文档,正在开发的小程序的源码,都给了我不少启发到小程序上富文本的解析一个优秀的开源项目微信小程序富文本解析组件作用在于解析你论坛上的帖子内容,你论坛上加粗的文字,加了颜色的文字,图片等等,都可以原原本本的展示在小程序中。 关于这个小程序 Github : https://github.com/DowneyL/di...‘ 这个小程序是公司针对一个自家产品的需求,而这个...

    YacaToy 评论0 收藏0
  • 浅谈开源web程序后台安全性

    摘要:大学网站使用了名为的开源程序,青年使用一个已经公开的漏洞进入后台青年使用后台上传限制不严的缺陷上传了一个控制主机赠送我国国旗。这些程序都是国内开源程序中的佼佼者,也比较注重安全性。此时后台程序的安全性成为一个短板。 一、前言 不知怎的最近甚是思念校园生活,思念食堂的炒饭。那时会去各种安全bbs上刷刷帖子,喜欢看别人写的一些关于安全技巧或经验的总结;那时BBS上很多文章标题都是:成功渗...

    ad6623 评论0 收藏0
  • 浅谈开源web程序后台安全性

    摘要:大学网站使用了名为的开源程序,青年使用一个已经公开的漏洞进入后台青年使用后台上传限制不严的缺陷上传了一个控制主机赠送我国国旗。这些程序都是国内开源程序中的佼佼者,也比较注重安全性。此时后台程序的安全性成为一个短板。 一、前言 不知怎的最近甚是思念校园生活,思念食堂的炒饭。那时会去各种安全bbs上刷刷帖子,喜欢看别人写的一些关于安全技巧或经验的总结;那时BBS上很多文章标题都是:成功渗...

    ky0ncheng 评论0 收藏0
  • 走进身份管理-IAM/IDaaS

    摘要:企业通过微信微博等为消费者提供社交认证或其他更多第三方身份提供商。支持多样身份提供方案良好的身份管理解决方案应该支持几乎所有流行的身份来源。易于迁移应支持移入和移出身份管理解决方案而不受限 IDaaS 身份即服务是随着云计算发展起来的新软件即服务。 showImg(https://segmentfault.com/img/remote/1460000020177039?w=800&h=...

    gghyoo 评论0 收藏0

发表评论

0条评论

Alan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<