새 6.1 사이트를 처음부터 설정하고 보안을 구현하려고 합니다. 기존 비밀번호 해시와 솔트가 포함된 Symfony 3.4의 이전 사이트에서 가져온 사용자 데이터베이스가 있습니다. 동일한 해시를 계속 사용하고 싶으므로 sha1 알고리즘을 사용합니다(나중에 고려할 것입니다). 해싱을 업그레이드합니다. 연산). 로그인을 시도하면 항상 다음이 반환됩니다.
으아악간단해 보이는데, 비밀번호를 인식하지 못하는 것 같아요. 그러나 비밀번호는 Symfony 3.4 버전 사이트에서 사용하는 데이터베이스의 비밀번호와 동일하며, 동일한 비밀번호 해셔를 사용합니다.
이 사이트는 기본적으로 바로 사용 가능한 사이트입니다. 보안이 작동하도록 하는 것 외에는 어떤 구성도 수행하지 않았으며 문서를 정확하게 따랐습니다.
이것은 내 security.yaml입니다:
으아악여기 SecurityController.php가 있습니다(라우팅/로그인 포함):
으아악이것은 내 login.html.twig입니다:
으아악내 사용자 클래스는 다음과 같습니다.
으아악이 문제 해결 방법 아시는 분 계신가요?
해결되었습니다! 가장 먼저 할 일은 내 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을 반환하는지 또는 이 검사가 유효한지 모르겠지만 주석 처리를 하면 로그인이 가능해졌습니다. :)