2012-06-22 3 views
1

security.yml : 내가 암호 설정 등록하는 동안 내 매니저에서 가 Symfony2에 로그인 할 수 없음

providers: 
    main: 
     entity: { class: Tg\UserBundle\Entity\User, property: username } 
encoders: 
    Tg\UserBundle\Entity\User: sha512 

: 내 사용자 개체에서

$encoder = $this->encoder->getEncoder($user); 
    $raw = $user->getPassword(); 
    $salt = $user->getSalt(); 
    $encoded = $encoder->encodePassword($raw, $salt); 

    if (!$encoder->isPasswordValid($encoded, $raw, $salt)) { 
     throw new \Exception('Password incorrectly encoded during user registration', 428); 
    } else { 
     $user->setPassword($encoded); 
    } 

을 나는 구조에 대한 기본적인 소금을 가지고 :

$this->salt = md5(uniqid(null, true)); 

나는 기본 로그인 템플릿에 오류가 나타날 수

,

표시된 비밀번호가 잘못되었습니다.

wtf?

답변

1

이것은 정확히 대답이 아닙니다. (예를 들어 작동하지 않는 이유를 알 수 없습니다.) 하지만 인코딩 된 SHA512의 64 기수를 사용하고 있는데이 설정은 나를 위해 잘 작동된다

security: 
    encoders: 
     Acme\HelloBundle\Entity\User: 
      algorithm: sha512 
      encode_as_base64: true 
      iterations: 10 

소금 초기화를 User 클래스 :이 도움이

$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36); 

희망을.

+1

그걸 해결하지 못했지만, 소금을 사용하면 소금기 길이가 바뀌었고, 아아, 암호 오류가 너무 짧았습니다. 저를 문제로 안내해 주셔서 감사합니다! – Tjorriemorrie

0

난 그냥이 오류를 누르십시오. 암호 필드가 sha512 해시 크기를 지원할 수 있는지 확인해야합니다. 자습서에서는 암호 필드의 기본값을 40으로 기본 설정합니다.이 크기를 더 큰 크기 (125)로 확장해야합니다.

관련 문제