簡體   English   中英

Joomla Google身份驗證插件保存新的用戶記錄

[英]Joomla google authentication plugin saves new user record

我已經為另一個API復制了Google身份驗證插件,但是由於某種原因,它沒有將記錄保存在Joomla中。 如果我手動添加用戶名和一些隨機密碼,那么我的插件會正確地針對API進行身份驗證-否則,當嘗試登錄時,我會收到錯誤消息:“您無法訪問此網站的私有部分。”

我並不是在尋找編碼幫助,我只是想知道Google身份驗證插件如何保存記錄。 我已經多次通過插件尋找它,但我沒有看到它。 我必須假定它與$ response有關,但是我正在設置google auth的每個值。 什么叫保存記錄?

編輯:

好的,顯然我不知道用戶如何登錄Joomla。 為什么不起作用?

public function onUserAuthenticate($credentials, $options, &$response) {
    // Load plugin language
    $this->loadLanguage();

    if (empty($credentials['password'])) {
        $response->status = JAuthentication::STATUS_FAILURE;
        $response->error_message = JText::_('JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED');

        return false;
    } else {

        $response->status = JAuthentication::STATUS_SUCCESS;
        $response->error_message = '';
        $response->type = 'Mysite';
        $response->email = $credentials['username'];
        $response->username = $credentials['username'];
        $response->fullname = $credentials['username'];
    }
}

對於谷歌搜索人員卻一無所獲的人,讓我詳細說明正在發生的事情。 如果您的非庫存Joomla授權模塊似乎可以正常工作,但是在后端沒有創建帳戶,並且立即向用戶顯示消息“您無法訪問此網站的私人部分”,則可能有兩種情況原因。

首先(也是最不可能的,因為您必須竭盡全力做到這一點),庫存的“ User-Joomla”插件中有一個選項標記為“自動創建用戶”。 默認情況下啟用。 如果禁用它,則通過您的自定義授權模塊登錄的用戶將不會在本地為其創建帳戶,因此他們將成為來賓。 這就是為什么顯示“您無法訪問”消息的原因-默認情況下,訪客看不到東西。 要解決此問題,您可以重新打開該自動創建選項(但是我想您有理由將其關閉?),或者可以在整個站點范圍內更改權限,以允許訪客訪問注冊用戶可以使用的權限。 或者您的自定義身份驗證插件可以自己手動保存用戶。

根據我的經驗,更可能的原因是嘗試保存新用戶時引發了異常。 與Joomla!中的大多數地方不同,這里的任何異常都會被攔截和隱藏。 這是因為auth模塊成功完成,因此盡管發生任何異常,登錄仍可以繼續進行。 但是,由於無法保存該帳戶,因此該用戶以來賓帳戶身份登錄。 由於來賓帳戶無法訪問任何內容(默認情況下),因此會向他們顯示該消息,然后有效注銷。

為了找到有關引發異常的更多信息,我臨時更改了Joomla核心庫的JUser類。 (在Joomla 3中,這是在librarys / joomla / user / user.php中。)查找save()函數,並找到它在哪里進行try {} catch塊,然后在catch中添加類似的內容

die($e->getMessage());

這將顯示在保存過程中發生的任何錯誤,而不是在地毯下悄悄地將它們清除。

如果您需要有關異常發生位置的更多信息,則可以通過打印出異常的getTraceAsString()方法來獲取堆棧跟蹤:

die("<pre>".$e->getMessage()."\n\n".$e->getTraceAsString()."</pre>");

在嘗試為我的網站創建身份驗證插件時,我遇到了這個問題。 我非常努力地尋找為什么我的插件不起作用的解決方案? 以及為什么我不斷得到:

您無法訪問該網站的私人部分

原來問題不是我的插件,它可以完美運行。 但是已經在joomla中創建了一個具有相同用戶名的帳戶,該帳戶尚未分配給任何用戶組。 這就是為什么登錄后會自動注銷並給出該錯誤的原因。

暫無
暫無

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

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