この質問は、セキュリティや「正しく実装する方法」に関する問題ではなく、入力された値を事前にチェックするという概念に関するものです。
最初のアプローチとして、次の手順を実装しようとしました(すべてcheck if
のステートメントで、メソッドは false の場合は識別子の値を返し、そうでない場合はアルゴリズムが続行されることに注意してください)
Save entered values in oldPW, newPW1, newPW2
check if oldPW is correct (Ajax request)
check if newPW1 == newPW2
check if length of newPW1 is >=6
check if newPW1 contains legal characters
check if newPW1 contains required characters (like at least one uppercase char etc.)
このアプローチは問題を引き起こし、非同期の ajax リクエストに関連していると思います。特定の識別子の整数を返し、次のようなメソッドを呼び出しました
switch(checkPasswords(oldPW, newPW1, newPW2){
case 0:
// alert something suitable
break;
case 1:
// alert something suitable
break;
//(...)
case n-1:
// alert something suitable
break;
case n:
// everything is ok, change password
break;
}
最後に古いパスワードを確認する方がクリーンですか? または、パスワードを変更しようとするときに直接 (新しい希望のパスワードが要件を満たしていると仮定)、結果として ajax 要求が 1 つだけになるのでしょうか? 共通のコンセプトとは?