Ich versuche auf die Endpunkte einer Website zuzugreifen (lighterpack.com, github: https://github.com/galenmaly/lighterpack). Um zu testen, ob ich dazu in der Lage bin, versuche ich einen POST-Aufruf an die 'Sign-in'-Funktion in edit.js (unten).Was fehlt in meiner Anmeldeanfrage?
Ich bin Postbote mit der POST-Anfrage zu senden, ist es, das Objekt zu senden {username: myusername, Passwort: myhashedpasswordandusername}
Ich Hashing das Objekt manuell jetzt auf meinem lokalen Rechner und das Kopieren, das aus zu Briefträger. Ich erstellte eine JS-Datei mit der Abhängigkeit "crypto-js" und führte den Befehl aus, den die Datei edit.js verwendet, nachdem var CryptoJS = require ('crypto-js') festgelegt wurde.
Dies könnte der Teil sein, den ich vermasselt habe, aber ich kann nicht sehen, wo. Ich
Mein Hashing-Datei Code:
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)
ich nehmen, was die Konsole abmeldet, und setze das in meinem Postman Objekt als Passwort. Die Sache, die ich nicht verstehe, ist, dass in der Datei edit.js CryptoJS nirgendwo definiert erscheint, nicht dass ich es trotzdem sehen könnte. Kann mir jemand in die richtige Richtung zeigen?
Original-edit.js Funktion:
$(".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();
}
});
});
In Ihrem Ajax-Anruf Daten nach Hash hat ein zusätzliches Komma .. Nehmen Sie das heraus. – Daniel
Sorry, war nicht klar. Der edit.js-Code, der den Ajax-Aufruf hat, ist nicht mein Code, sondern die Webseiten. Dieser Code ist die Aktion aus dem Login-Formular auf der Website. – Joe