2016-04-27 3 views
0

Я пытаюсь получить доступ к конечным точкам веб-сайта (lighterpack.com, github: https://github.com/galenmaly/lighterpack). Чтобы проверить свою способность делать это, я пытаюсь сделать POST-вызов функции «signin» в edit.js (внизу).Что не хватает на мой запрос на вход?

Я использую Почтальон для отправки запроса POST, отправив ему объект {имя пользователя: MyUserName, пароль: myhashedpasswordandusername}

Я хэширование объекта вручную прямо сейчас на моей локальной машине, и копирование, что из Постману. Я создал JS-файл с зависимостью «crypto-js» и выполнил команду, которую использует файл edit.js, после установки var CryptoJS = require ('crypto-js').

Это может быть та часть, которую я испортил, но я не вижу, где. Я

Мой код хэширования файл:

var crypto = require('crypto-js') 
var pass = "mypassword" 
var name = "username" 
var hash = crypto.SHA3(pass+name) 

var hash= hash.toString(crypto.enc.Base64) 

console.log(hash) 

Я беру то, что консоль выходит из системы, и положить, что в моем Почтальон объекта как мой пароль. Я не понимаю, что в файле edit.js CryptoJS не отображается нигде, а не то, что я мог видеть в любом случае. Может ли кто-нибудь указать мне в правильном направлении?

Оригинальная функция edit.js:

$(".signin").on("submit", function(evt) { 
     evt.preventDefault(); 
     var form = this; 
     var error = ""; 
     var username = $(".username", this).val(); 
     var password = $(".password", this).val(); 
     if (!password) error = "Please enter a password."; 
     if (!username) error = "Please enter a username."; 

     if (error) { 
      $(".lpError", this).text(error).show(); 
      return; 
     } 

     $(".lpError", this).text("").hide(); 

     username = username.toLowerCase(); 
     var hash = CryptoJS.SHA3(password+username); 
     hash = hash.toString(CryptoJS.enc.Base64); 

     $.ajax({ 
      url: "/signin", 
      data: {username: username, password: hash, }, 
      method: "POST", 
      error: function(data, textStatus, jqXHR) { 
       var error = "An error occurred."; 
       if (data.responseText) error = data.responseText; 
       $(".password", form).val("").focus(); 
       $(".lpError", form).text(error).show(); 
      }, 
      success: function(data) { 
       $("#signin, #lpModalOverlay").fadeOut("slow", removeBlackout); 
       $(".password, .username", form).val(""); 
       signedIn(data.username); 
       library.load(JSON.parse(data.library)); 
       initWithLibrary(); 
      } 
     }); 
    }); 
+1

В ваших данных вызова ajax после hash есть дополнительная запятая. Возьмите это. – Daniel

+0

Извините, не было ясно. Код edit.js, который имеет вызов ajax, - это не мой код, а веб-сайты. Этот код является действием из формы входа на веб-сайт. – Joe

ответ

0

Так кто-то получил мне ответ. В github существует файл public/sha3.js с переменной CryptoJS, а файл app.js объявляет эту информацию (CryptoJS) глобальной переменной.

Я скопировал sha3.js и смог правильно хэшировать мои данные, а затем логин. Успех!