Почему мой код правильно не обнаруживает состояние входа в систему? [закрыто]Javascript

Форум по Javascript
Ответить
Anonymous
 Почему мой код правильно не обнаруживает состояние входа в систему? [закрыто]

Сообщение Anonymous »

Я строю веб-сайт электронной коммерции с отдельными потоками для клиентов, администраторов и партнеров по доставке. У меня есть http-файлы jwt cookie для аутентификации. После успешного входа в систему я перенаправляю на index.html, где следует заменить кнопки для входа и регистрации на значок профиля, но значок профиля не появляется, и нажатие в систему снова запускает цикл.

Код: Выделить всё

const BASE_URL = "https://example.com/api"; // Backend deployed
document.addEventListener("DOMContentLoaded", () => {
checkLoginStatus();
});

async function loginUser(email, password) {
try {
const res = await fetch(`${BASE_URL}/auth/login`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ email, password }),
credentials: "include" // for cookies
});

const data = await res.json();
if (res.ok) {
alert("Login successful");
window.location.href = "index.html";
} else {
alert(data.message || "Login failed");
}
} catch (error) {
console.error("Error:", error);
}
}

async function checkLoginStatus() {
try {
const res = await fetch(`${BASE_URL}/auth/me`, {
method: "GET",
credentials: "include"
});
const data = await res.json();

const loginBtn = document.getElementById("login-btn");
const signupBtn = document.getElementById("signup-btn");
const profileIcon = document.getElementById("profile-icon");

if (res.ok) {
// Hide login/signup, show profile icon
if (loginBtn) loginBtn.style.display = "none";
if (signupBtn) signupBtn.style.display = "none";
if (profileIcon) profileIcon.style.display = "block";
} else {
if (loginBtn) loginBtn.style.display = "block";
if (signupBtn) signupBtn.style.display = "block";
if (profileIcon) profileIcon.style.display = "none";
}
} catch (error) {
console.error("Error checking login status:", error);
}
}
< /code>
Бэкэнд -маршруты (node.js + Express): < /p>
router.post("/login", async (req, res) => {
// Verify credentials
// Generate JWT and send as HTTP-only cookie
res.cookie("token", token, {
httpOnly: true,
secure: true,
sameSite: "None"
});
res.status(200).json({ message: "Login successful" });
});

router.get("/me", authMiddleware, (req, res) => {
res.status(200).json({ user: req.user });
});
< /code>
I Проверенные файлы cookie отправляются и хранятся в браузере после входа в систему. CheckLoginStatus () 
вызовы на domcontentloaded in index.html. Backend /me < /code> маршрут работает в почтальстве и возвращает объект пользователя. Я добавил учетные данные: «Включите» в запросы на выборку и обеспечил SameSite: «Нет» и безопасность: true для файлов cookie в производстве.
Почему CheckLoginStatus () не обнаруживает состояние зарегистрированного вновь после переплаты и как я могу это исправить?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ogin-state
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»