2012-03-28 1 views
2

내가 좋아하지 않는 방식으로 비밀번호를 해싱 한 사용자의 기존 데이터베이스가 있습니다. 가 로그인 할 때 내가 그 해시에 대한 싶습니다 는 새로운 해시 양식 (bcrypt)으로 업데이트해야합니다.여러 가지 해시 유형을 검사 할 수 있도록 symfony 비밀번호 확인을 무시하는 방법

을 내가 사용자와 보안 인코더로 Elnur's bcrypt bundle을 관리 할 수 ​​FOSUserBundle을 사용하고 있습니다. 알고리즘 이런 종류의 추가 암호 확인 장치에 연결하는 쉬운 방법이 있나요 : 내가 확인하는 계정의 ID가없는 현재 보안 인코더하지만 isPasswordValid 확장 방법에 대해 생각

if passwordHash is using old format 
    oldFormatHash := hash userGivenPassword in the old way 
    if oldFormatHash == passwordHash 
    login ok 
    update password in database with new hash format 
    else 
    login ko 
else 
    use default 

(또는 그것의 정규 이름) 업데이트 부분을 사용할 수 없습니다.

답변

1

누군가이 문제에 직면하는 데 도움이 될 수있는 경우 여기에 제가 사용한 해결책이 있습니다. 데이터베이스에 암호를 저장하는 옛 방식은 소금을 사용하지 않았습니다. 그래서이 열을 업데이트하여 사용자의 ID를 포함 시켰습니다.

그런 다음 salt 매개 변수를 사용하여 사용자의 암호 해시를 업데이트하는 자체 보안 인코더를 쉽게 만들 수있었습니다.

관련 문제