首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Joomla使用控制器手动登录

Joomla使用控制器手动登录
EN

Stack Overflow用户
提问于 2012-01-20 07:07:45
回答 3查看 1.5K关注 0票数 1

我正在为Joomla开发一个组件。它与流行的社交网站进行了集成。我通过给定的社交档案从数据库中检索用户信息。然后,我尝试使用以下代码让该用户登录:

代码语言:javascript
复制
$fbuser = $facebook->api(
                '/me',
                'GET',
                array(
                    'access_token' => $_SESSION['active']['access_token']
                )
            );

            // Get a database object
            $db =& JFactory::getDBO();
            $query = "SELECT * FROM #__users WHERE email = '".$fbuser['email']."';";
            $db->setQuery($query);
            $row = $db->loadRow();

            if(isset($row))
            {
                $app = JFactory::getApplication();
                $user =& JUser::getInstance($row[0]);

                $credentials = array();
                $credentials['username'] = $user->get('username');
                $credentials['password'] = $user->get('password'); // When I change this to related users plain password then it works

            $options = array();
                $options['remember']     = true;
                $options['silent']     = true;

                $app->login($credentials, $options);
            }
            else
            {
                return 'There is no account associated with facebook';
            }

问题是数据库返回编码的密码,但这不起作用。当我将解码的密码提供给$credentials时,它起作用了。会有什么问题呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-20 11:11:37

一种选择是创建您自己的身份验证插件(非常简单的任务),它将使用只有您和站点知道的特定密码登录任何用户。

然后,您可以提供该密码和已知用户名。

为了安全起见,只允许该插件登录普通用户,而不是管理员。

票数 2
EN

Stack Overflow用户

发布于 2012-01-20 07:32:21

您需要对pwd (它在数据库中的存储方式)进行MD5散列。

试试这个:

代码语言:javascript
复制
$salt = '19IQYkelXrqVH1Eht6PFOIZRe5T1SQHs';
$pwd = md5_hex($pwd .  $salt) .":$salt";
$query = "select name,username,email,password from jos_users where password = $pwd;";
...
票数 0
EN

Stack Overflow用户

发布于 2016-09-04 13:38:48

代码语言:javascript
复制
            // --- login mamanam.com
            $app = JFactory::getApplication();      
            $credentials = array();
            $credentials['username'] = $username;
            $credentials['password'] = $password;
            $app->login($credentials);

登录函数Joomla!$app->login($credentials)的数组$credentials=array()中的必要参数

*对不起,我的英语不太好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8934717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档