ホームページ  >  に質問  >  本文

Symfony 6.1 で、3.4 Web サイトのユーザーデータベースを使用して新しい Web サイトにログインできない問題

新しい 6.1 サイトを最初からセットアップし、セキュリティを実装しようとしています。 Symfony 3.4 の以前のサイトのユーザー データベースを使用しようとしていますが、これには既存のパスワード ハッシュとソルトが含まれています。同じハッシュを引き続き使用したいので、sha1 アルゴリズムを使用します (これについては後で検討します)。 ハッシュをアップグレードします。アルゴリズム)。ログインしようとすると、常に次のメッセージが返されます:

リーリー

これは単純なことのようですが、パスワードが認識されません。ただし、パスワードは Symfony 3.4 バージョン サイトで使用されているデータベース内のパスワードと同じであり、まったく同じパスワード ハッシュを使用します。

これは基本的にすぐに使えるサイトです。セキュリティを機能させる以外に何も設定を行っていません。ドキュメントに正確に従いました。

これは私の security.yaml:

リーリー

これは SecurityController.php (ルーティング/ログインを含む):

リーリー

これは私のlogin.html.twigです:

リーリー

これは私のユーザー クラスです:

リーリー

この問題の解決方法を知っている人はいますか?

P粉129168206P粉129168206308日前596

全員に返信(1)返信します

  • P粉523335026

    P粉5233350262024-01-09 11:44:03

    解決しました!まず、User クラスが PasswordAuthenticatedUserInterface ではなく LegacyPasswordAuthenticatedUserInterface を継承するようにします。

    2 番目のことは、/vendor/symfony/password-hasher/Hasher/MessageDigestPasswordHasher.php を確認し、verify 関数で最初のブロック行 ## をコメントアウトすることです。 #if (\strlen($hashedPassword) !== $this->hashLength || str_contains($hashedPassword, '$')) {.

    $this->hashLength

    は常に -1 であるため、このブロックは永続的に false を返します。 $this->hashLength はコンストラクターで設定されています。なぜ常に -1 を返すのか、そのチェックが有効なのかはわかりませんが、コメントアウトすることでログインできるようになりました :)

    返事
    0
  • キャンセル返事