5

Tenía una aplicación que se enganchaba en 1 sola base de datos.Asp.net anula la configuración de membresía en el tiempo de ejecución (asp.net mvc)

La aplicación ahora necesita conectarse a múltiples bases de datos. Lo que queremos hacer es usar la misma aplicación/dominio/nombre de host/directorio virtual para darle al usuario la opción en la pantalla de inicio de sesión para seleccionar la "Aplicación/Base de datos" a la que quiere conectarse.

Cada base de datos tiene las tablas de aplicaciones/data/procs/etc, así como las pertenencias aspnet/roles.

Cuando el usuario ingresa el nombre de usuario/contraseña y selecciona (lista de selección) la aplicación, deseo validar al usuario con la base de datos de aplicaciones seleccionada.

Actualmente, la cadena de conexión de la base de datos para los servicios de membresía se guarda en el archivo web.config. ¿Hay alguna manera de que pueda anular esto en el momento del inicio de sesión? Además, también necesito que la función "recordarme" funcione sin problemas. ¿Cómo funciona esto cuando el usuario vuelve a la aplicación en 5 horas ... Este proceso debería ser capaz de identificar al usuario y la aplicación e iniciar sesión correctamente.

Respuesta

5

La única manera posible es cambiar la cadena conn través de la reflexión:

// Set private property of Membership provider.FieldInfo connectionStringField 
= GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic); 
     connectionStringField.SetValue(this, connectionString); 

encontrar aquí: http://forums.asp.net/p/997608/2209437.aspx

¿Por qué no implementar su propio MembershipProvider? Muy fácil de hacer y luego tienes el control total de lo que está sucediendo. Estoy seguro de que se te ocurrirá otro escenario personalizado con el que el proveedor predeterminado no funcione bien.

AFAIK la función de recordarme debería funcionar exactamente cómo se describe, siempre y cuando el usuario no elimine sus cookies.

Cuestiones relacionadas