2009-12-25 60 views
4

我正在使用Turbogears 2.1和repoze.who /什麼以及在解決如何擴展基本身份驗證功能時遇到困難。我基本上試圖要求用戶通過電子郵件鏈接激活他們的帳戶,然後才能登錄。如果他們嘗試在未激活其帳戶的情況下登錄,我想顯示相應的錯誤消息。默認的Turbogears功能僅顯示一條消息,顯示所有錯誤。如何擴展Turbogears 2.1登錄功能

我創建了我自己的身份驗證插件,它工作正常。如果用戶沒有激活帳戶,它將不允許用戶登錄。但是,當我嘗試創建窗體並顯示自定義錯誤消息時,會出現問題。我怎麼能這樣做呢?

感謝

+0

你現有的認證代碼是什麼樣的?例如。你使用哪些謂詞,和/或他們是在行動級別,控制器級別等。 – Kylotan 2010-01-06 10:21:33

回答

4

這是不可能給出一個很好的答案,沒有看到實際的代碼,但這裏有一個想法:

  1. 創建repoze.who元數據提供的插件,「塗鴉」的東西,指示是否用戶已經激活了他們的賬戶。
  2. 創建一個「challenger decider」插件,用於查看用戶是否已通過身份驗證,以及是否已激活其帳戶(通過檢查您使用元數據插件設置的元數據)。
  3. 創建一個挑戰者插件發回實際的挑戰。如果用戶未通過身份驗證,請發回登錄表單/提示。如果用戶已通過身份驗證(您的身份驗證器插件成功),但他們尚未激活其帳戶,請發回一個自定義錯誤頁面,要求用戶激活其帳戶。

無論如何,仔細閱讀this page

你也可以使用repoze.what與自定義謂詞,但你可能必須通過代碼遍歷裝飾器,檢查他們的帳戶是否已在每個控制器/方法上被激活。醜陋。

希望這會有所幫助!