簡體   English   中英

電子郵件作為用戶名登錄 joomla 3.4

[英]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?

它不會更簡單:

登記

  • 隱藏用戶名字段 (CSS)
  • 保存(在創建和編輯期間),用該電子郵件的值填寫用戶名字段。 (我不是開發人員,在這里無法提供幫助)也許,您有什么想法/建議嗎?

登錄

  • 使用簡單的語言覆蓋將“用戶名”標簽更改為“電子郵件”(電子郵件和警報中相同)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM