2014-01-22 71 views
0

我非常新的CakePHP非常和善和我一起承擔。我正在做一個小小的任務,我已經完成了很多事情,但是我遇到了一個問題。我的任務有兩種不同的用戶類型,我需要兩個不同的登錄名,或者可能是一個登錄名將重定向他們。我閱讀了有關使用用戶模型,控制器和表的官方教程,但問題在於它僅適用於一種用戶類型。我想要的是,一旦我的應用程序打開,顯示登錄頁面,並根據用戶類型(管理員或員工)將他們重定向到其各自的索引頁面。 我已經創建了員工表和管理員表,並且都包含用戶名和密碼字段。教程說用戶表應該有用戶名和密碼字段,但我不想使用用戶表,因爲我已經在這兩個表中都有這些字段。所以有可能根本不使用用戶表,並使用我的當前表進行用戶登錄和認證。請引導我,因爲我在過去的幾個小時裏面遇到了這個問題。非常感謝您提供的幫助或指導。CakePHP的多個用戶類型登錄

回答

1

您只能使用一個模型(User)並且有一個名爲type的字段,其值可以是adminemploye

這樣你就不必在多個表中相同的字段,你就可以只有一個登錄表單,並在用戶登錄後,你可以將用戶重定向到正確的頁面。

Auth組件,你將永遠知道當前登錄的人是什麼類型的用戶,這樣你就可以在其他控制器使用此。

AppController,你可以有

public $components = array(
    'Auth' => array(
     'loginAction' => array(
      'controller' => 'Users', 
      'action' => 'login' 
     ), 
     'loginRedirect' => array(
      'controller' => 'Users', 
      'action' => 'dashboard' 
     ), 
     'logoutRedirect' => array(
      'controller' => 'pages', 
      'action' => 'display', 
      'home' 
     ), 
     'authorize' => array('Controller') 
    ) 
); 

UsersController - dashboard方法,用戶剛剛登錄後會被調用,所以在這裏你可以得到用戶類型和重定向到正確的頁面。

+0

感謝您的回答,我明白你在說什麼,但loginRedirect和logutRedirect可以爲任何用戶不能同時定義,我已經將它定義爲員工。但是,如果用戶角色是管理員呢?在哪裏定義該條件?我可以使用兩個$組件,或者我需要在UsersController頁面上定義它?你能告訴我嗎? IT會非常有幫助。 – user3224207

1

您的邏輯是不是很健全。如果管理員和用戶具有相同的用戶名會怎麼樣?所有用戶都應該在同一張桌上,區別爲user_type_id或同等表。

但是,如果你要堅持你目前的方案讓他們在同一個頁面,那麼你只剩下嘗試登錄的人作爲一個用戶,如果成功重定向到用戶的網頁登錄,如果失敗再次作爲管理員,如果它成功重定向到管理頁面,如果失敗意味着用戶名/密碼對於這兩種情況都是無效的。這樣至少可以得到的一些種基本安全。

+0

或者只是一個簡單的角色/ role_id字段。提示:[微小](http://www.dereuromark.de/2011/12/18/tinyauth-the-fastest-and-easiest-authorization-for-cake2/) – mark