2010-04-26 4 views
0

"암호를 잊었습니다"기능을 사용하려고합니다. 내 문제는 만약 내가 Doctrine 질의를하려고하고 이메일에 암호를 보내면 암호가 암호화되어 검색된다는 것이다. DoctrineGuard에는이 기능이 없으며 등록 및 로그인 기능 만있는 웹이 있습니다.sfDoctrineGuard 질문

사실입니까?

이 경우 암호 기억 기능을 어떻게 수행합니까?

감사

답변

1

암호 해시 한 후 저장되고 나면, 따라서 암호를 복구 할 수없는 데이터베이스에 저장된다.

이 당신이 "비밀번호 분실"기능을 만들 수있는 몇 가지 방법은 다음과 같습니다

  • 이메일로 새 비밀번호를 전송 (정말 안전하지하지만 어쨌든 같은 일부 사람들은)
  • 함께 사용자에게 이메일 보내기 사용자에게 새 암호를 제공하거나 사용자가 새 암호를 입력하도록 허용하는 재설정 암호 링크 (및 고유 한 토큰).
+0

첫 번째 방법은 안전하지 않다고 말하는가? 두 번째 방법은 임의의 암호를 설정하고 .... user/reset/xdErDerfEFe와 같은 링크로 보냅니다. 여기서 "xdErDerfEFe"는 토큰이며 해당 작업에서 select password = that ...를 선택합니다. 후 변경 허용? – nebur85

+0

첫 번째 방법은 보안 수준이 낮습니다. 예를 들어 사용자가받은 편지함에 액세스 할 수 있으면 새 암호를 볼 수 있기 때문에 두 번째 방법은 토큰을 한 번만 사용한 다음 암호를 변경 한 후에는 쓸모가 없기 때문입니다. – DuoSRX

+0

다음과 같은 작업을 시도합니다 ... 1) 암호를 입력하고 사용자 이름이 등록되어 있으면 임의의 암호를 입력하고 setpassword를 수행하십시오. 2) ... 'username/password/xxxx'와 같은 이메일을 보냅니다. 여기서 xxx는 생성 된 비밀번호입니다. 3)이 비밀번호로 사용자 이름을 찾으십시오. 내 문제는 암호화하고 암호를 내가 어떻게 실제 encripted되는 암호 :( 당신이 날 이해 하는가를 찾을 수 있다는 것입니다? – nebur85

0

오른쪽 독서가 기억 나는 경우 sfDoctrineGuard에는 암호화되지 않은 암호를 검색하는 데 필요한 "getPassword"메소드가 없습니다.

나는 새로운 암호를 생성하고 $ user-> setPassword (염색을 자동으로 처리하는 &)와 함께 저장하고 사용자에게 전자 메일로 보내는 DuoSRX의 첫 번째 권장 사항을 사용하고 있습니다. 그러면 사용자는 로그인하여 새 암호를 작성하는 것이 좋습니다.

3

버전 5.0.0부터 sfDoctrineGuard-Plugin에는 잊어 버린 암호 모듈이 내장되어 있습니다. 그러나 해당하는 추가 정보에

[TODO: document the forgot password feature] 

는 잊어 - 암호 기능을 사용하려면 :)을 사용하는 방법 스파 스 정보는)가 다음을 수행하십시오 (이미 플러그인 정상적인 로그인 절차가 작동) 설치 가정 :

을 (그것을 사용하고 같이 I18N 활성화)
    1. 모듈 settings.yml에 사용 :

      all: 
          .setting: 
          enabled_modules: [default, sfGuardAuth, sfGuardForgotPassword] 
          i18n: true 
      
    2. routes.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 } 
      
    3. 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 
      
    4. 은 보낸 사람이 (나를 위해 자동으로 작동하지 않는 및 라우팅)app.yml을에 주소 추가 . app.yml 및 팩토리의 주소.YML, 그렇지 않으면 SMTP 서버 불평 수도 동일해야합니다 :

      all: 
          sf_guard_plugin: 
          routes_register: true 
          default_from_email: [email protected] 
      
    5. 터치 apps/your_app/modules/sfGuardForgotPassword/config/security.ymlmake the request form accessible while logged out에 :

      secure: 
          is_secure: true  
      index: 
          is_secure: false  
      change: 
          is_secure: false 
      
    6. 명확 캐시./symfony cc와.

    이제 비밀번호를 잊어 버리십시오.

  • +1

    만 일이/sfGuardForgotPassword/config/security.yml'이면'apps/your_app/modules/sfGuardForgotPassword/config/security.yml'을 읽어야합니다. – jaudette