2012-07-01 36 views
0

我是新的Drupal但我只是想破解/自定義Drupal 7的登錄功能,如硬編碼。正如我發現Drupal 7登錄過程正在處理user.module及其相關文件。由Drupal 7處理的屬性默認用戶登錄過程

我只想知道當通過提供用戶名/密碼完成用戶日誌/認證過程時返回或提供哪些類型的值或屬性。

返回,提供返回的Drupal(沿整個認證過程)的最終性能,我只注意到到目前爲止是:已嘗試用戶

    • {UID} {擺脫}用戶的角色ID
    • 用戶電子郵件
    • 用戶被阻塞或不
    • 然後..?

    重點是..還有其他什麼?
    我可以替換/修改整個現有的身份驗證過程嗎? (如我需要)

    例如,在user.module的缺省auth功能之一:

    function user_authenticate($name, $password) { 
        .. 
        return $uid; 
    } 
    

    例如,如果我修改(硬編碼),其作用是連接到我的其他外部數據庫(一個或多個)並返回{用戶ID},Drupal將得到一個認證要求{uid}。那麼還有什麼其他的提供?用戶角色和..等等等等?

    像那樣..我還應該觸摸哪些其他功能和屬性,並在認證過程中提供回Drupal?

  • 回答

    1

    Drupal是一個可擴展的系統。不需要像「用戶」模塊那樣在覈心模塊中進行「硬編碼」。您應該研究允許擴展核心(也是貢獻)模塊的鉤子系統。

    如果你想從不同的數據庫中獲取用戶標識(我不清楚這個用例),你仍然可以使用Drupal數據庫中的角色和其他用戶數據。

    +0

    請你分享一些關於爲用戶登錄做'hook'的事情嗎? –

    2

    這不是一個實際的答案,但我不能發表此評論作爲評論。

    基本上我們不會破解核心。所以看看user.module的代碼而不是可以幫你學習鉤子。舉一個例子,通過查看hook_nodeapi()的代碼,創建節點時如何添加一些魔力很困難。但是,如果您檢查文檔和返回/輸入參數,則執行該任務會更容易。

    我想通過使用hook_form_alter()添加額外的提交處理程序來登錄窗體。我已經看到了有關您的用例的其他一些線索,但不幸的是很難爲您提供示例代碼。您可以看到其他模塊如何實現額外的身份驗證(例如:)。 (查看記住我模塊如何添加一個複選框登錄窗體和twitter模塊,允許twitter登錄)。

    然後,你可以讓Drupal正常認證用戶,而你的新定製功能另外還有 Drupal的認證。

    Drupal甚至可以連接到外部數據庫,無論它是否是Drupal。

    正如您在許多函數中看到的那樣,它們返回一個布爾值或有時是用戶標識。 user_load()是加載基本用戶對象的函數。

    記住它是模塊化的。一些模塊可以使用hook_user_load()來包含/刪除/更改這些值。用戶條款模塊和配置文件模塊就是一個很好的例子。它包含其他模塊需要用戶信息時的配置文件字段信息。

    單個用戶不僅僅是一組信息。它可以在過程的任何部分進行修改。所以那樣做。使用您的模塊提供您的外部網站所具有的信息。

    {uid} of the attempted user 
    {rid} role id of the user 
    user email 
    user is blocked or not 
    user last login time. 
    user register date. 
    ... 
    

    要查看整個對象網站,輸入以下內容。

    <pre> 
    <?php 
    $user_account = user_load (1); 
    print_r($user_account); 
    ?> 
    </pre> 
    

    您可以在使用php過濾器的節點創建頁面中輸入此代碼。

    沒有硬編碼,您可以允許其他模塊使用這些值。即使您的源數據庫沒有角色ID,您也可以爲他們提供角色ID,用戶ID等。

    祝你好運!