2014-10-03 83 views
0

我已經複製了另一個API的Google身份驗證插件,但由於某種原因,它沒有將記錄保存在Joomla中。如果我手動添加用戶名和一些隨機密碼,那麼我的插件會正確地對API進行身份驗證 - 但除此之外,當嘗試登錄時,我會收到錯誤消息:「您無法訪問此站點的私人部分。」Joomla google身份驗證插件保存新的用戶記錄

我不是在尋找編碼幫助,我只是想知道Google身份驗證插件如何保存記錄。我已經通過插件多次尋找它,但我沒有看到它。 我必須假設它與$響應有關,但我設置了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']; 
    } 
} 

回答

2

對於使用Google搜索並沒有找到任何東西的人,請讓我詳細說明發生了什麼。如果您的非庫存Joomla授權模塊看起來可行,但後端沒有創建賬戶,並且用戶立即顯示消息「您無法訪問該站點的私人部分」,則有一些可能的情況引起。

首先(也是最不可能的,因爲您不得不這樣做),在標有「自動創建用戶」的股票「用戶 - Joomla」插件中有一個選項。它是默認啓用的。如果您將其禁用,那麼通過您的自定義授權模塊登錄的用戶將不會獲得本地帳戶,因此他們將成爲嘉賓。這就是爲什麼顯示「你無法訪問」的信息 - 默認情況下,客人看不到東西。爲了解決這個問題,你可以重新打開那個自動創建選項(但是,然後,我認爲你有理由關閉它),或者你可以在整個站點範圍內更改權限,以允許訪問者像註冊用戶那樣訪問。或者你的自定義auth插件可以自己手動保存用戶。

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

要找到有關拋出異常的更多信息,我暫時更改了Joomla核心庫的JUser類。 (在Joomla 3中,這是在庫/ joomla/user/user.php中)。查找save()函數,並找到它在做try {} catch塊的位置,並在catch中添加如

die($e->getMessage()); 

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

如果您需要了解其中的例外是發生更多的信息,您可以通過打印出異常的getTraceAsString獲得堆棧跟蹤()方法:

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

我很欣賞這個答案,但這隻能告訴我這個框架是怎麼回事。我通過重新安裝Joomla回答了我自己的問題,但顯然Stack Overflow管理員決定刪除答案。 – 2014-10-31 15:33:39

+0

但你沒有回答你的問題。你剛剛停止了這個問題!你最初的問題仍然沒有得到答覆,一般的Joomla經理不能重新安裝Joomla,並希望修復它。 (我有兩個人,幾乎一個月就可以配置。)我的意思是,知道你通過重新安裝得到它有點用處,但這實際上並不是對「這個身份驗證插件出了什麼問題」的「答案」? 「上述步驟會告訴您身份驗證插件正在報告什麼錯誤,這可以幫助您解決這些問題。不消除一個月的工作。 – ericheimburg 2014-11-21 04:21:43

+0

我的確回答了我的問題 - 「我的插件出了什麼問題?」答:「沒有,這是一個框架問題」。 – 2014-11-21 07:48:00

1

我以前試圖創建一個證明這個問題我的網站插件。我非常努力地尋找解決方案,爲什麼我的插件沒有工作?爲什麼我不斷收到:

您不能訪問私有部分本網站

轉出的問題是不是我的插件,它完美的作品。但是,joomla中已經創建了一個用戶名相同的帳戶,該帳戶未分配給任何用戶組。這就是爲什麼登錄後,它會自動註銷並給出該錯誤。