Javascript защищенная паролем область.. должен быть лучше

Я все еще довольно свеж в сцене javascript, но у меня есть немного кода, который работает, как предназначено для всех намерений и целей... но просто должен быть лучший и более чистый способ сделать это, и я просто хотел бы посмотрим, как это будет сделано.

function Restricted() {

var password = 'pass1';
var password1 = 'pass2';
var password2 = 'pass3';
var password3 = 'pass4';
var password4 = 'pass5';

if (this.document.login.pass.value == password || this.document.login.pass.value == password1 || this.document.login.pass.value == password2 || this.document.login.pass.value == password3 || this.document.login.pass.value == password4) {

//Do stuff if correct

setTimeout(function() {
setLocation('#'); 
  }, 2000);
}
else {

//Alert them its wrong

}

так что, как вы можете видеть... ввод всех разных паролей - это нормально и следовало ожидать, но вся функция проверки, состоящая в том, чтобы просто сравнивать все разные пароли с каждым из них, чтобы определить, работают ли они, должна быть одним из худших способов обхода этого. Хаха, это почти неловко, когда я смотрю на это.

3 ответа

Решение

Вы можете иметь ваши пароли в массиве, а затем использовать метод indexOf массива. Возвращает индекс элемента в массиве или -1, если его нет.

...
var passwords = ["pass1", "pass2"];
if (passwords.indexOf(this.document.login.pass.value) !== -1) {
...

Однако сравнение паролей в JavaScript не является безопасным способом сделать это, каждый может увидеть код или изменить его.

Реализуйте свой логин на стороне сервера. Ваш сервер должен решить, заслуживает ли пользователь доверия (введя известную пару учетных данных) и, если они есть, разрешить доступ к ограниченным частям веб-сайта.

Если пользователь еще не ввел правильные учетные данные и не имеет надлежащих сеансов / файлов cookie, чтобы доказать это, сервер должен запретить запись.

Посмотрите, как реализовать простую систему входа в систему / аутентификации на вашем любимом серверном языке (PHP, NodeJS и т. Д.).

Я собираюсь ответить на более общий вопрос, чтобы не вмешиваться в гораздо более важный вопрос о проверке пароля на клиенте... oye. Общий вопрос: учитывая список строк, как вы соответствуете одной?

Первым делом нужно взять этот список строк (паролей) и поместить их в массив. И тогда вы можете сопоставить индекс, используя встроенные методы массива, такие как indexOf,

function Restricted() {
  var strings = ['pass1', 'pass2', 'pass3', 'pass4', 'pass5'];

  if (strings.indexOf(this.document.login.pass.value) !== -1) {
    //Do stuff if correct
    setTimeout(function() {
      setLocation('#');
    }, 2000);
  } else {
    //Alert them its wrong
  }
}
Другие вопросы по тегам