Yo uso node js y express js. Quiero asegurarme de que si app.get no tiene un parámetro de token, cargue un archivo html con js que pasará el token. Y si se pasó el token, muestre otro archivo html.
Pero no se como hacer una redirección desde el cliente con la transferencia de una cabecera con un token
Servidor:
app.get("/admin-cp/:page", function (req, res) { const idToken = req.headers.authorization; if (!idToken) { return res.sendFile(path.join(initial_path, "admin-cp/loader.html")); //return res.status(401).send("Unauthorized") } const sessionCookie = req.cookies.session || ""; admin .auth() .verifySessionCookie(sessionCookie, true ) .then((userData) => { console.log("Logged in:", userData.email) console.log('Авторизован. Доступ в админ панель открыт') admin .auth() .verifyIdToken(idToken) .then((claims) => { if (claims.admin === true) { console.log('Зашёл с правами администратора', req.params.page); if (req.params.page === 'analytics') { console.log("Open analytics"); res.sendFile(path.join(initial_path, "admin-cp/main-admin_cp.html")); //res.render(path.join(initial_path, "admin-cp/main-admin_cp.html")); //res.redirect('/admin-cp/home'); } } else if (claims.admin === false) { console.log('Зашёл без прав администратора'); //res.sendFile(path.join(initial_path, "admin-cp/global_not_permission.html")); res.redirect('/'); } }); }) .catch((error) => { console.log('Не авторизован. Ошибка', error, ' отсутвует userData') res.redirect("/login"); }); });Traté de hacer con "buscar":
const res = await fetch('/admin-cp/analytics', { headers: { authorization: idToken }, redirect: 'follow' }) .then(res => { console.log(res); if (res.redirected) { document.location = res.url; } })Pero después de todas las acciones, res.sendFile no se actualiza
ayudar con cualquier consejo. por favor
La secuencia de eventos es así.
fetch , incluido un encabezado de authorization , a la URLfetch a la nueva URL (no tengo idea si incluye el encabezado de authorization nuevamente aquí)fetchdocument.location lo que hace que el navegador realice una nueva solicitud GET a esa URL (definitivamente sin un encabezado de authorization ).res.sendFile(path.join(initial_path, "admin-cp/loader.html")) porque no hay un encabezado de authorization . No puede hacer que el navegador navegue e incluya un encabezado de authorization .
Si desea realizar la autenticación mientras navega: Utilice cookies en su lugar.