¿No sería mejor almacenar el ID de usuario en lugar del ID de sesión para que solo busquemos la base de datos una vez para extraer otra información del usuario en lugar de extraer dos veces el ID de usuario de la sesión db y luego el db?
Sería una muy mala idea porque un usuario malintencionado podría cambiar la ID que está enviando.
Si, por ejemplo, el administrador tiene el id 1
y un usuario el id 101
, ese usuario simplemente podría cambiar su id en la cookie a 1
, y así obtener privilegios de administrador.
Por el mismo motivo, no desearía enviar ningún otro dato relevante en las cookies, ya que no puede confiar en estos datos (a menos que estén firmados y, por lo tanto, no puedan modificarse, por ejemplo, utilizando jwt).
Por supuesto, podrías generar identificadores de usuarios aleatorios. Pero incluso si asumimos que estos son indiscutibles, esto sería problemático. Básicamente, sería lo mismo que si estuviera enviando la contraseña en una cookie. Si una identificación se filtra incluso una vez, un atacante obtendría acceso permanente ya que es irrevocable. Los ID de sesión, por otro lado, caducan después de un tiempo o pueden ser revocados.
La ID de usuario es un valor constante en la base de datos que no es lo que usted quiere para manejar tokens de sesión en cookies, ya que la ID de sesión tiene que cambiar con frecuencia.
Como dijo @AndrolGenhald, la identificación del usuario en una base de datos probablemente será fácil de predecir ya que probablemente sea un número que simplemente se incremente con los nuevos usuarios. Por otra parte, un ID de sesión tendrá una alta entropía, por lo que es muy difícil adivinar el valor de un ID de sesión.
Lea otras preguntas en las etiquetas web-application authentication cookies session-management