Por ejemplo, tengo una página con la URL "/foo" y necesito mostrar los apodos de mis usuarios autenticados en esta página. ¿Hay alguna función predeterminada de node.js/passport para esto, o necesito agregar a cada usuario de esta página a la base de datos y mostrarla con websockets?
Esquema de usuario:
var userSchema = new Schema({ email: {type: String, required: true, unique: true }, password: {type: String, required: true }, nickname: { type: String, default: 'User'}, createdAt: { type: Date, default: Date.now } });Compruebe si el usuario ha iniciado sesión:
function isLoggedIn(req, res, next) { if (req.isAuthenticated()) { return next(); } req.session.oldUrl = req.url; res.redirect('/'); }Así lo resolví en un servicio que aloja historias. Tuve que mostrar la cantidad de usuarios y sus nombres en la página de la historia actual. Quería mantener la solución lo suficientemente simple, así que decidí usar una tabla simple en SQL.
En una tabla SQL con una sola columna, PAGE_{PAGEID}_USER_{USERID} .
Para cada página cuando el usuario la obtuvo, agregué una entrada en esta tabla y consulté la columna de la tabla con la expresión regular PAGE_{PAGEID}_USER_(.*) con actualización a menos de 1 minuto de la hora actual.
Esto le brinda las ID de los usuarios en la página actual en el último minuto.
PD: la forma correcta de hacer esto sería hacer lo mismo en una tienda de columna ancha