我正在用symgony1.4和doctrine1.2構建一個webapp,我想使用sfDoctrineGuardPlugin,但是我有一點問題。sfDoctrineGuardPlugin:用電子郵件登錄
sfDoctrineGuardPlugin是通過用戶名進行身份驗證,但我需要將其更改爲要求發送電子郵件。
任何想法如何做到這一點?
我正在用symgony1.4和doctrine1.2構建一個webapp,我想使用sfDoctrineGuardPlugin,但是我有一點問題。sfDoctrineGuardPlugin:用電子郵件登錄
sfDoctrineGuardPlugin是通過用戶名進行身份驗證,但我需要將其更改爲要求發送電子郵件。
任何想法如何做到這一點?
http://bluehorn.co.nz/2009/06/12/symfony-12-propel-and-sfguardplugin-email-login/
這已經寫入了推進,但可能很容易適用教義。
我做了一些或多或少的事 – alcuadrado 2010-03-17 16:54:35
如何讓sfDoctrineGuard保持原樣,使用現有的用戶名字段,但保存電子郵件。您的用戶將使用他們的電子郵件登錄。默認的字段長度是VARCHAR(128),這對於任何電子郵件來說都是足夠的。如果我沒有記錯,唯一需要調整的是sfguard註冊,登錄等的表單標籤(無論您在哪裏展示它)。你基本上只是說「在這裏輸入電子郵件」而不是說「在此輸入用戶名」。
唯一的缺點是你失去了「用戶名」,但你總是可以把它放在與sfGuardUser相關的單獨配置文件中。
如果你不喜歡這種方法,你可以直接調整sfDoctrineGuardPlugin代碼,但它可能會導致一些頭痛的問題。
驗證將是錯誤的,並且名稱也會在代碼中出錯......我不喜歡這樣做。 – alcuadrado 2010-03-17 16:53:49
你的downvote是沒有道理的。您可以通過在頂部添加自定義驗證來輕鬆覆蓋驗證。而且你從未指定過要保持用戶名不變。 – Tom 2010-03-17 17:16:30
如果我正確理解你的問題,你想允許用電子郵件登錄。
sfDoctrineGuardPlugin支持使用電子郵件或用戶名登錄,但在5.0.0被打破,根據這個票:
http://trac.symfony-project.org/ticket/8919
有一個補丁存在。應用補丁並創建你的app.yml設置allow_login_with_email爲true的條目:
all:
sf_guard_plugin:
allow_login_with_email: true
這是你需要什麼?
這似乎並沒有實際工作,或者,您需要在驗證程序類的其中一個手動更改中使用retrieveByUsernameOrEmailAddress()而不是retrieveByUsername()。奇怪,不是你的答案,而是Symfony。 – Tom 2011-06-11 14:57:53
我會回答這個以防其他人讀這個問題尋求幫助。
正如oznek指出的那樣,您必須使用「allow_login_with_email」參數。
但是,插件(至少在5.0.0版本中)存在一個阻止其工作的錯誤。 你必須修改該文件:/sfDoctrineGuardPlugin/lib/validator/sfGuardValidatorUser.class.php
線44 替換此:
$user = $this->getTable()->retrieveByUsername($username);
與此:
$user = $this->getTable()->$method($username);
(以下簡稱 「$method
」 變量被定義如上的幾行,但從未使用)
它應該很簡單。開始搜索'用戶名'的插件,並開始替換:) – Raise 2010-03-10 19:05:40