[英]email as username to login joomla 3.4
我无法设置电子邮件以在我的站点中执行登录。 我创建了一个插件身份验证来覆盖现有的身份验证,我在其中更改 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
有人能帮我吗?
我解决了,我想分享我的解决方案:您不需要修改身份验证插件的joomla.php。
你必须修改/components/com_users/controllers
控制器user.php
如下: $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;
$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 以防在你的语言文件中登录失败。
就这样!
(对于登录后重定向,在它返回的 url 中添加 Itemid 以工作....)
通过这种方式,我编辑了核心文件,但我不喜欢。 有没有办法很好地覆盖 com_users?
它不会更简单:
登记
登录
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.