私のウェブサイトでは、2つのパスワード(実際にはウェブサイトの人間のユーザーが知っている限り同じパスワードを使用していますが、2つの異なるアルゴリズムと塩を使用してハッシュし塩漬けしています) 1つはWebUsersテーブルの場所で、ユーザーがWebサイトにログインするときにパスワードが確認されます。もう1つはOracleユーザーのパスワードで、各WebサイトユーザーはOracleユーザーに対応しています。DDLステートメントの実行前の自動コミットの回避策
パスワード変更手順を実行する場合、WebUsers表およびOracleでのパスワードをトランザクション内で変更する必要があります。問題は、アクションを実行する前にDDL文[alter user ...]がコミットされることです。 [alter user ...]が失敗し、例外処理コードでトランザクションをロールバックすると、WebUsersテーブルの変更はロールバックされません。何か回避策はありますか?
古いハッシュ値を変数に格納し、DDLに失敗した場合にWebUsersテーブルを古い値で再度更新することはできませんか? –
パスワードをOracleおよびテーブルに保存するのはなぜですか?あなたの認証を組み合わせることができない理由があるので、問題を完全に排除しますか? –