2016-04-27 52 views
0

我試圖訪問一個網站的端點(lighterpack.com,github:https://github.com/galenmaly/lighterpack)。爲了測試我做這個的能力,我試圖在edit.js(底部)中對'signin'函數進行POST調用。我的登錄請求中缺少什麼?

我使用郵差發送POST請求,將其發送對象{用戶名名稱:myusername,密碼:myhashedpasswordandusername}

我散列對象手動現在我的本地機器上,並複製了這一點郵遞員。我創建了一個帶有「crypto-js」依賴項的JS文件,並在設置var CryptoJS = require('crypto-js')後運行edit.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調用哈希數據後有一個額外的逗號..拿出一個。 – Daniel

+0

對不起,不清楚。具有ajax調用的edit.js代碼不是我的代碼,而是網站。此代碼是來自網站登錄表單的操作。 – Joe

回答

0

因此,有人把我的答案。在github中,有一個文件public/sha3.js具有CryptoJS變量,而app.js文件將該文件的信息(CryptoJS)聲明爲全局變量。

我抄了sha3.js,並能夠正確地哈希我的數據,然後登錄。成功!