1

我在理解MVC概念時遇到了一些麻煩。Zend Framework用戶認證(MVC問題)

我在建立用戶模型,你知道嗎? Application_Model_Users。他們說這些模型應該只包含結構......業務邏輯應該放在控制器中。

所以,考慮一個稱爲authenticate($ user,$ password)的函數。如果輸入的用戶名和密碼有效,此函數將返回true,否則返回false。我應該在哪裏放置這個功能?在控制器身份驗證中還是在模型用戶中?

謝謝!

回答

1

與模型相關,無論何時您需要檢索數據(從數據庫,Web服務,文件系統)或保存數據,都需要一個模型來完成這項工作。在MVC中,模型不被理解爲映射表,可能更像是一個映射器。 Zend在他們的網站上有關於此的一些信息,它可以幫助你更多地理解mvc。

當涉及到用戶身份驗證時,您當然應該在用戶模型中實現身份驗證功能,我認爲您會對錶或類似數據庫執行檢查。爲了防止你還沒有使用它,Zend提供了一個用於auhtentication的包:Zend_Auth(http://framework.zend.com/manual/en/zend.auth.html),它可以加速實現安全你的申請。

1

儘管模型操作通常包含存儲操作(DB,servicer等),但並不僅限於此。據我所知,模型應該是業務邏輯實體,這就是表示業務實體的類,如用戶,人員,客戶等。每個類都應該定義自己的操作方法,例如,Person模型類應該允許你得到一個人的名字,根據他/她的出生日期計算他/她的年齡等。

此外,應該有專門的模型存儲和檢索類。使用這些類,您可以使用某些條件等獲取所有客戶或唯一一個客戶,或者保存修改後的客戶類實例(例如,客戶更改了他/她的地址或電話號碼)。

這將存儲/檢索操作與業務登錄操作分開。

因此,根據您的問題,您的模型可能有一個類,允許您通過其用戶名和密碼找到一個用戶。如果找到用戶,您可以返回一個Model_User類實例(在示例中)。然後,使用標準的Zend_Auth類,或者擴展它來創建您自己的認證類,您可以使用一些登錄表單參數來執行用戶認證。

按照Zend Framework快速入門指南,在Zend Framework中有關於MVC的基礎知識。此外,你會發現一些關於Zend_Db和相關類的資源,以允許數據庫交互。還有Zend_Db_Table,Zend_Db_Table_Rowset和Zend_Db_Table_Row類,您可以擴展以適應您的模型存儲需求。

我有一個個人解決方案,我爲我的(例如)Model_UserTable類擴展Zend_Db_Table,用於存儲或查詢我的Model_User實體。我的Model_User類擴展了Zend_Db_Table_Row。

+0

耶穌? reallly – dynamic 2011-06-08 21:48:12

+0

是的,耶穌.... – 2011-07-01 07:30:18

+0

rofl .......... – dynamic 2011-07-01 15:32:33