Правильный подход к предварительной проверке JavaScript для диалога "изменить пароль"

Этот вопрос не о безопасности или о том, "как правильно реализовать", а о концепции предварительной проверки введенных значений.

В качестве первого подхода я попытался реализовать следующую процедуру (обратите внимание, что на каждом check if оператор, метод возвращает значение идентификатора, если ложь, иначе алгоритм продолжается)

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 ответ

Решение

Я бы лично рекомендовал разделять запросы Ajax, проверяя старый пароль, когда пользователь оставляет старый ввод пароля (onblur) и имеет свою собственную функцию обработчика / успеха и вторую функцию для обработки фактической смены пароля.

учитывая эту разметку:

<input type="text" id="oldPassword" value="" />
<input type="text" id="newPassword" name="newPassword" value="" />
<input type="text" id="confirmNewPassword" name="confirmNewPassword" value="" />
<input type="button" id="submitButton" value="Reset Password" />

и этот (псевдокод)JS:

<script type="text/javascript">
//some doc ready-ish function
$('#oldPassword').blur(function(){
//ajax request to validate the pw
//trigger some success / failure message
//if failure, disable your #submitButton by unbinding the click event or something to that effect 

//if its successful, make sure you're submit button event is bound again
}); 

$('#submitButton').click(function(){
//perform new pw validation 
//submit your reset password request 
});

</script>
Другие вопросы по тегам