Quiero almacenar información adicional en el usuario autenticado para que pueda tenerlo fácilmente accesible (como User.Identity.Id, por ejemplo), en lugar de solo el nombre, ya que estoy planeando tener ese no exclusivo.¿Cómo implemento Principal e Identidad personalizados en ASP.NET MVC?
Hasta ahora, he llegado a la conclusión de que debería buscar implementar un Principal o una Identidad personalizada, pero no estoy seguro de cómo hacerlo. He estado buscando documentación y tutoriales sobre el tema, pero he encontrado cosas relacionadas en diferentes lugares y lo he encontrado un poco confuso.
He visto cómo agregar información personalizada a la cookie de autenticación en la propiedad de datos del usuario, pero me gustaría tener el beneficio de la inyección de dependencia para pruebas de unidades, que puedo tener con el principal y la identidad.
¿Cuáles son los exactas pasos que necesito tener en cuenta si quiero aplicar mi propio director o de identidad?
¿Cuál sería la manera más sencilla que podría hacer en este escenario (simplemente agregue la ID y mantenga todos los valores predeterminados en su lugar)? Los "valores predeterminados" incluirían los proveedores predeterminados (membresía, roles, etc.).
He visto el other question, pero agradecería las respuestas que no dejan ningún agujero en el medio, como los roles magic strings en el evento AuthenticateRequest en los ejemplos. En su lugar, necesito saber cómo agregar los roles del proveedor SqlRoleProvider predeterminado al usuario actual: cuándo y dónde hacerlo, y si necesito hacer algo más para conectar mis nuevas clases con los otros proveedores predeterminados.
Sería increíble poder acceder a una aplicación de ejemplo ASP.NET MVC 2 (de la plantilla visual studio 2010, por ejemplo), hacer las ediciones y hacer que funcione.
EDIT: He editado la pregunta a un mejor espectáculo que estoy bastante perdido aquí, así que no se puede conformar con respuestas muy alto nivel.
P.S .: Me parece que tiene más sentido tener el ID en la Identidad en lugar del principal, aunque he dicho de alguna manera esto antes.
¿Actualmente tiene formularios de autenticación y roles configurados y en funcionamiento? –
Sí. Comencé con una aplicación web MVC (a diferencia de una aplicación web MVC * Empty *) de las plantillas VS 2010, por lo que tiene todos los proveedores SQL predeterminados para la administración de usuarios: membresía y roles incluidos. Pero la mayor parte se hace detrás de las cortinas. A través de la convención, como si fuera –
¿no puedes usar el soporte de perfil para este tipo de cosas? Para eso es (datos adicionales asociados con el usuario) - debería ser más simple que tratar de hacer un "usuario personalizado". Creo que –