mvc - Datos de usuario de la tienda ASP.Net en la cookie de autenticación
mvc authentication methods (6)
Quiero almacenar algunos datos como el apodo del usuario y la identificación del usuario (clave principal de la tabla) en la sección de datos del usuario de la cookie de autenticación. El motivo por el que hago esto es retener estos datos cuando el navegador está cerrado, sin que el usuario vuelva a iniciar sesión.
Editar : ¡Ups! Me di cuenta de que no me había explicado bien. No estoy intentando volver a autenticar a un usuario según su cookie. El usuario ya está autenticado por el sistema de membresía de ASP.Net: esta parte está bien. Mi problema es que si quiero mostrar el alias del usuario, por ejemplo, tengo que iniciar otra consulta SQL y luego almacenarla en la sesión. Pensé que tendría sentido almacenar esta información en la cookie de autenticación (nuevamente, la que ya se había creado por ASP.Net) en la sección UserData, que parece haber sido creada para este propósito.
No quiero usar perfiles porque tengo mi propia tabla de usuarios con datos de perfil, y necesitaba una solución liviana.
¿Cuál es una buena forma de codificar estos datos en la sección de datos de usuario de la cookie de autenticación? Estaba pensando en la serialización, pero eso podría ser excesivo. ¿Voy por esto de la manera incorrecta?
Almacenar datos de usuario adicionales en la cookie significa una cookie más grande que se envía de ida y vuelta desde el cliente con cada solicitud.
Un mejor enfoque para evitar las visitas extra a la base de datos que le preocupan es almacenar esos datos en la memoria caché después de que el usuario inicie sesión.
ASP.NET tiene un caché por solicitud HttpContext.Current.Items y un caché de dominio de aplicación HttpContext.Current.Cache, creo que está buscando HttpContext.Current.Cache en esta instancia.
Alternativamente, si necesita almacenar en caché los servidores web (cargar servidores web equilibrados), puede buscar almacenes de valores clave de terceros como memcached, redis, velocity, ncache, etc.
Aparentemente estaba en el camino correcto: http://www.asp.net/learn/security/tutorial-03-vb.aspx (Paso 4: Paso 4: Almacenamiento de datos de usuario adicionales en el ticket)
He escrito un tutorial en profundidad sobre cómo hacer esto aquí:
http://www.danharman.net/2011/07/07/storing-custom-data-in-forms-authentication-tickets/
Esto mantiene el cifrado y la autenticación, y usa json para serializar una clase en el campo UserData.
Sí. Si está almacenando la identificación de usuario y el inicio de sesión en la cookie, ¿qué impide que alguien cambie sus cookies a la identificación de usuario y al inicio de sesión de cualquier persona?
Necesita configurar un sistema de tickets de autenticación. Básicamente es un valor de cookie que se verifica cuando no existe sesión. Si hay un valor presente, ejecútelo contra una tabla de tickets que debería contener su ID de usuario. Si encuentra el boleto, deles una sesión y un boleto nuevo .
Si ya tiene una tabla de usuarios con información de perfil, ¿por qué no la enlaza con un proveedor de perfil personalizado ?
Si desea otro ejemplo de cómo implementar algo como esto, puede echar un vistazo al proveedor de perfiles SQL Table
Tal vez podrías simplemente crear otra cookie ... Yo personalmente no me metería con la cookie de autenticación.