Tengo un poco de una situación única aquí. Estoy haciendo una aplicación web que tendrá la capacidad de iniciar sesión con diferentes credenciales de aplicaciones web. Por ejemplo, puede iniciar sesión/registrarse en mi sitio o puede iniciar sesión/registrarse con su cuenta de YouTube. No estoy usando OpenID porque necesito tener acceso a los datos de YouTube en este caso.Cambiar los proveedores de membresía ApplicationName durante el tiempo de ejecución. ¿Cómo?
Estoy usando ASP.NET MVC 3 EF4 con membresía personalizada, función, proveedores de perfiles.
El problema es que los nombres de usuario no pueden ser únicos porque alguien con un nombre de usuario de YouTube podría tener el mismo nombre de usuario que alguien que se haya registrado en mi sitio. Así que lo hice especificando un tipo de usuario en mi tabla de usuarios. Esto es más o menos una clave compuesta (identificación de usuario y tipo de usuario).
Tengo un atributo de autorización personalizado que está buscando el rol en el que se encuentra el usuario, pero ahora necesito implementar un IPrincipal personalizado porque necesito pasar un tipo de usuario. El único problema es dónde lo almaceno? ¿La sesión?
Originalmente pensé que esto es lo que la tabla de aplicación era de, y tuve éxito momentáneo con eso, pero no leer enhebrar cuestiones, y que estaba recibiendo faltas de sesión por todo el lugar no era tan bueno :(
Me pregunto cuál es la mejor manera de hacerlo porque no puedo usar los métodos reemplazados en los proveedores porque tengo que agregar un parámetro UserType a algunos de los métodos, pero esto rompe la funcionalidad del proveedor.
EDITAR: Básicamente necesito tener la capacidad de cambiar ApplicationName en el tiempo de ejecución pro-gramáticamente. Intenté hacer esto, el único problema fue cuando me detuve mi servidor de desarrollo, pero dejé mi navegador abierto y luego volví a ejecutar mi servidor de desarrollo; no mantendría el nombre de la aplicación.
EDITAR: He cambiado mi aplicación para usar OAuth, nunca encontré una buena solución.
Muy buena pregunta. Tuve que hacer esto en el pasado y solo a 1/2 me gustó la solución que creé. Le mostraré parte del código cuando le devuelva mi computadora a mi esposa. :) –