3.4 웹사이트의 사용자 데이터베이스를 사용하여 새 웹사이트에 로그인할 수 없는 Symfony 6.1 문제
P粉129168206
P粉129168206 2024-01-08 17:40:58
0
1
649

새 6.1 사이트를 처음부터 설정하고 보안을 구현하려고 합니다. 기존 비밀번호 해시와 솔트가 포함된 Symfony 3.4의 이전 사이트에서 가져온 사용자 데이터베이스가 있습니다. 동일한 해시를 계속 사용하고 싶으므로 sha1 알고리즘을 사용합니다(나중에 고려할 것입니다). 해싱을 업그레이드합니다. 연산). 로그인을 시도하면 항상 다음이 반환됩니다.

으아악

간단해 보이는데, 비밀번호를 인식하지 못하는 것 같아요. 그러나 비밀번호는 Symfony 3.4 버전 사이트에서 사용하는 데이터베이스의 비밀번호와 동일하며, 동일한 비밀번호 해셔를 사용합니다.

이 사이트는 기본적으로 바로 사용 가능한 사이트입니다. 보안이 작동하도록 하는 것 외에는 어떤 구성도 수행하지 않았으며 문서를 정확하게 따랐습니다.

이것은 내 security.yaml입니다:

으아악

여기 SecurityController.php가 있습니다(라우팅/로그인 포함):

으아악

이것은 내 login.html.twig입니다:

으아악

내 사용자 클래스는 다음과 같습니다.

으아악

이 문제 해결 방법 아시는 분 계신가요?

P粉129168206
P粉129168206

모든 응답(1)
P粉523335026

해결되었습니다! 가장 먼저 할 일은 내 User 클래스를 상속받게 만드는 것입니다 LegacyPasswordAuthenticatedUserInterface 而不是 PasswordAuthenticatedUserInterface.

두 번째로 확인하는 것은 /vendor/symfony/password-hasher/Hasher/MessageDigestPasswordHasher.php,并在 verify 函数中,注释掉开头的块行 if (strlen($hashedPassword) !== $this->hashLength || str_contains($hashedPassword, '$')) {.

이 블록은 생성자에 $this->hashLength 始终为 -1。 $this->hashLength가 설정되어 있기 때문에 영구적으로 false를 반환합니다. 왜 항상 -1을 반환하는지 또는 이 검사가 유효한지 모르겠지만 주석 처리를 하면 로그인이 가능해졌습니다. :)

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿