Я изучаю веб-разработчика, и я хотел бы передать заголовок "авторизации", когда запрос маршрутизации выполняется по маршруту "/".
index. js:
app.get("/", function (req, res) {
res.render("algoritmika", {logged: VefiryLogin(req)});
});
Метод «VerifyLogin» ожидает запрос с заголовком «authorization», который не передается в обвиулсы. Я использую Ajax для отправки запросов, но я не знаю, как передать заголовок с запросом get .
Если я напишу собственный Ajax запрос на получение маршрута "/" и передам заголовки, "app.get" сработает дважды, поэтому страница не будет правильно отображена.
РЕДАКТИРОВАТЬ: Ajax код:
$.ajax({
url: "/",
type: "GET",
headers: {"authorization": localStorage.getItem('token')},
success: function() { ... }
});
РЕДАКТИРОВАТЬ 2: больше кода и что я пытаюсь сделать (как я уже сказал, я новичок в этом, поэтому я не знаю, если это правильный путь):
Validate. js - обрабатывает формы входа и регистрации на странице.
$(document).ready(function () {
$.ajax({
url: "/",
type: "GET",
headers: {"authorization": localStorage.getItem('token')},
success: function() { alert('Success!' + authHeader); }
});
$("#prijava").validate({
rules: {
email: {
required: true,
email: true,
},
password: {
required: true,
},
},
messages: {
email: {
required: "Vnesite email",
email: "Vnesite pravilni email",
},
password: {
required: "Vnesite geslo",
},
},
submitHandler: function (form) {
$.ajax({
type: "POST",
url: "/prijava",
data: $(form).serialize(),
success: function (token) {
$(form).html("<div id='message'>Prijava uspela</div>");
localStorage.setItem("token", token);
setTimeout(function () {
location.reload();
}, 0001);
},
statusCode: {
500: function (data) {
console.log(data.responseJSON);
if (!$("#message").length) {
$(form).append(
"<div class='text-center' id='message'>" +
data.responseJSON.error +
"</div>"
);
}
},
},
});
return false;
},
});
$("#registration").validate({
rules: {
email: {
required: true,
email: true,
},
password: {
required: true,
minlength: 8,
},
},
messages: {
email: {
required: "Vnesite email",
email: "Vnesite pravilni email",
},
password: {
required: "Vnesite geslo",
minlength: "Vnesite vsaj 8 znakov",
},
},
submitHandler: function (form) {
console.log($(form).serialize());
console.log(form);
console.log(JSON.stringify($(form).serialize()));
$.ajax({
type: "POST",
url: "/registracija",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: "json",
data: $(form).serialize(),
success: function (data) {
$(form).html("<div >Registracija uspela!</div>");
setTimeout(function () {
location.reload();
}, 0001);
},
statusCode: {
500: function (data) {
console.log(data.responseJSON);
if (!$("#message2").length) {
$(form).append(
"<div class='text-center' id='message2'>" +
data.responseJSON.error +
"</div>"
);
}
},
},
});
return false;
},
});
});
start. js: блокирует запуск пользователя, если они не вошли в систему.
$(document).ready(function () {
$("#startButton").on("click", function btnClick() {
$.ajax({
method: "GET",
url: "/start",
headers: {"authorization": localStorage.getItem('token')},
success: function (data) {
if(data == false){
$("#modalPrijava").modal("show")
}
else if(data == true){
window.location.href = "/bubblesort";
}
},
fail: function (err) {
console.log(err)
}
});
});
});
Больше индекса. js - обрабатывает проверку входа в систему.
app.get("/start", function (req, res) {
VefiryLogin(req,res);
});
function VefiryLogin(req,res = null){
return jwt.verify(req.headers["authorization"], SECRET_PW, function (
err,
decoded
) {
if (err) {
console.log("error - not logged");
console.log(err);
SendIfNotNull(res,false);
return false;
} else {
console.log("no error");
console.log(decoded._id);
user = userModel.findById(decoded._id);
if (user) {
SendIfNotNull(res,true);
return true;
} else {
console.log("no user with this id");
SendIfNotNull(res,false);
return false;
}
}
});
}
function SendIfNotNull(res,value){
if(res != null){
res.send(value);
}
}
algoritmika.e js - отображает различный материал, если вы вошли в систему или нет
<% if(logged === false){ %>
...
<% } else if(logged === true){ %>
...
<% } %>