Symfony 6.1 で、3.4 Web サイトのユーザーデータベースを使用して新しい Web サイトにログインできない問題
P粉129168206
P粉129168206 2024-01-08 17:40:58
0
1
646

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

リーリー

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

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

これは私の security.yaml:

リーリー

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

リーリー

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

リーリー

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

リーリー

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

P粉129168206
P粉129168206

全員に返信(1)
P粉523335026

解決しました!まず、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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート