通过电子邮件作为用户名登录joomla 3.4

问题描述 投票:1回答:2

我无法设置用于在我的网站中执行登录的电子邮件。我创建了一个插件身份验证来覆盖现有身份验证,在该身份验证中,我更改了SQL查询以选择ID和密码:

$query = $db->getQuery(true)
    ->select('id, password')
    ->from('#__users')
    ->where('**email**=' . $db->quote($credentials['username']));

我也试图如下修改login.xml

 <field name="username"
        type="email"
        class="validate-email"
        filter="email"
        label="COM_USERS_LOGIN_EMAIL_LABEL"
        size="25"
        required="true"
        validate="email"
        />

当我尝试登录时,我得到:

You can't access to the private section of the site

有人可以帮我吗?

php xml joomla
2个回答
1
投票

我解决了,我想分享我的解决方案:您无需修改​​身份验证插件的joomla.php。

您必须如下修改user.php中的控制器/components/com_users/controllers$data['email'] = $input->$method->get('email', '', 'EMAIL'); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('username') ->from('#__users') ->where('email=' . $db->quote($data['email'])); $db->setQuery($query); $utente = $db->loadResult(); $data['username'] = $utente;

通过这种方式,您可以使用表格中传递的电子邮件选择正确的用户名。

现在您可以修改登录形式(/components/com_users/models/form/login.xml将所有出现的“用户名”更改为“电子邮件”(请参见下文):<field name="email" type="email" class="validate-email" filter="email" label="E-mail" size="25" required="true" validate="email" />

然后您必须在语言文件中登录失败的情况下修改jmessage。

就这些!

((用于登录后重定向,将Itemid添加到它可以正常工作的URL中。)

以这种方式,我编辑了核心文件,但我不喜欢。无论如何,是否可以很好地覆盖com_users?


0
投票

没有那么简单:

注册

  • 隐藏用户名字段(CSS)
  • 保存(在创建和编辑期间),在用户名字段中填写该电子邮件的值。 (我不是开发人员,在这里不能提供帮助)也许,您有想法/建议吗?

登录

  • 使用简单的语言替代,将“用户名”标签更改为“电子邮件”(在电子邮件和警报中相同)
© www.soinside.com 2019 - 2024. All rights reserved.