我試圖做一個「我忘記了我的密碼」功能。我的問題是,如果我嘗試做一個學說查詢併發送密碼到電子郵件,它將檢索加密的密碼。我看了一些網站DoctrineGuard沒有這個功能,只有註冊和登錄功能。sfDoctrineGuard問題
這是真的嗎?
在這種情況下,我該如何做記憶密碼功能?
感謝
我試圖做一個「我忘記了我的密碼」功能。我的問題是,如果我嘗試做一個學說查詢併發送密碼到電子郵件,它將檢索加密的密碼。我看了一些網站DoctrineGuard沒有這個功能,只有註冊和登錄功能。sfDoctrineGuard問題
這是真的嗎?
在這種情況下,我該如何做記憶密碼功能?
感謝
密碼進行散列,然後保存到數據庫中,因此一旦它被保存,你不能恢復密碼。
有幾種方法,你可以創建一個「密碼丟失」功能:
如果我記得閱讀權限,sfDoctrineGuard沒有一個「getPassword」方法,它將執行所需的操作...未加密地檢索密碼。
我正在使用DuoSRX的第一個建議:創建一個新密碼,使用$ user-> setPassword(它可以自動處理醃製&散列)並將它通過電子郵件發送給用戶。建議用戶登錄並創建一個新密碼。
從版本5.0.0開始,偉大的sfDoctrineGuard-Plugin有一個內置的忘記密碼模塊。但在相應的自述有稀疏的信息如何使用它:))
[TODO: document the forgot password feature]
要使用忘記密碼功能做以下(假設你已經安裝了插件,並正常登入工作):
啓用模塊在settings.yml
(並啓用I18N,因爲它的使用的話):
all:
.setting:
enabled_modules: [default, sfGuardAuth, sfGuardForgotPassword]
i18n: true
在routing.yml中添加路由(自動添加對我無效)。並確保您包含一個用於重定向的規則@homepage。
sf_guard_forgot_password_change:
url: /forgot_password/:unique_key
class: sfDoctrineRoute
options: { model: sfGuardForgotPassword, type: object }
param: { module: sfGuardForgotPassword, action: change }
requirements:
sf_method: [get, post]
sf_guard_forgot_password:
url: /forgot_password
param: { module: sfGuardForgotPassword, action: index }
啓用factories.yml
郵件(提防differences for prod/dev env.See also the official doc.):
all:
mailer:
class: sfMailer
param:
logging: %SF_LOGGING_ENABLED%
charset: %SF_CHARSET%
delivery_strategy: realtime
transport:
class: Swift_SmtpTransport
param:
host: smtp.example.com
port: 25
encryption: ~
username: [email protected]
password: p4ssw0rd
添加發件人地址到app.yml
(和路由不爲我工作自動) 。在app.yml和工廠中的地址。陽明應該是一樣的,否則SMTP服務器可能會抱怨:
all:
sf_guard_plugin:
routes_register: true
default_from_email: [email protected]
觸摸apps/your_app/modules/sfGuardForgotPassword/config/security.yml
到make the request form accessible while logged out:
secure:
is_secure: true
index:
is_secure: false
change:
is_secure: false
清除緩存與./symfony cc
。
現在忘記您的密碼。
唯一的事情,而不是'應用程序/ your_app/sfGuardForgotPassword/config/security.yml',它應該讀取'apps/your_app/modules/sfGuardForgotPassword/config/security.yml' – jaudette 2013-02-28 23:18:08
你說第一種方法不安全? 第二種方法你說...設置一個隨機密碼,發送它像一個鏈接.... user/reset/xdErDerfEFe其中「xdErDerfEFe」是標記,並在該操作做一個選擇其中密碼= ...並允許更改後? – nebur85 2010-04-26 21:31:21
第一種方法不太安全,因爲如果某人有權訪問用戶收件箱,他可以看到他的新密碼,而第二種方法中,令牌只能使用一次,然後在密碼更改後無效。 – DuoSRX 2010-04-27 07:20:38
我嘗試做類似... 1)輸入密碼,如果用戶名已註冊,請執行隨機密碼並執行setpassword。 2)它會發送一封電子郵件,比如......'用戶名/密碼/ xxxx',其中xxx是授權密碼 3)如果您點擊,則嘗試使用此密碼查找用戶名。 我的問題是,密碼是加密的,我無法找到真正的是如何encripted密碼:( 你明白嗎? – nebur85 2010-04-27 13:12:50