Ayer descubrí cómo dar a un usuario reclamos personalizados. Entonces, ahora, al iniciar sesión, busco la publicación '/ getMyClaims' y obtiene qué tipo de reclamos tienen.
Y cuando inicio sesión como administrador, puedo ir a las rutas que son solo de administrador, pero a veces al azar, el bloqueo vuelve a ser falso, por lo que no permite incluso al administrador. ¿Cómo mantengo el idToken reconocido cada vez? Me ha costado mucho tratar de averiguar cómo hacer que esto funcione, incluso cuando los documentos proporcionados y la mayoría de los recursos son para reaccionar o vue. Estoy usando nodejs y javascript y html simples.
Pensé en almacenar el bloque, pero supongo que es refrescante y luego el bloque variable vuelve a estar indefinido.
Aquí está mi server.js:
var block; var blockware = (req,res,next) => { if(block == true || block == undefined){ return res.sendStatus(401); } next(); } app.post('/getMyClaims', async(req,res) => { let {uid,idToken} = req.body; console.log(idToken.token) if(idToken.claims.type === 'customer'){ block = true; console.log('deny') } else if(idToken.claims.type === 'admin'){ block = false; } else { block = true; } }) // admin only pages app.get(['/seller','/add-product', '/add-product/:id'], blockware, (req,res) => { res.sendFile(path.join(staticPath, '')) })Por lo general, nunca desea almacenar idTokens o el lado del servidor de jwt. El propósito es que el cliente los envíe junto con cada solicitud como se menciona en uno de los comentarios.
Hay otro problema con su código, es que confía ciegamente en el token que ingresa. Dondequiera que se cree ese token (su código no muestra dónde está), debe validar que el token no haya expirado y no haya no ha sido manipulado comunicándose con el servicio o verificándose con su secreto del lado del servidor. Una vez que pasa, solo entonces puede confiar en el contenido del token y determinar si el usuario es un cliente/administrador/otra persona.
Consulte aquí para obtener más información: https://medium.com/@mmoshikoo/simple-jwt-authentication-explanation-81e930a1a01f