2009-08-02 8 views
11

Me pregunto cómo puedo extender las cosas de membresía en asp.net?¿Cómo extender la membresía en Asp.net?

Cuando un usuario inicia sesión, deseo verificar el nombre de usuario y la contraseña. Por supuesto, la membresía estándar asp.net hace esto (este es ValidateUser()).

También quiero verificar otro campo llamado "institución". Si un usuario escribe algo en esta casilla, quiero verificar si la "institución", "nombre de usuario" y "contraseña" coinciden con lo que está en la base de datos.

Si un usuario deja en blanco la "institución", entonces solo quiero usar el método ValidateUser() predeterminado que se proporciona en asp.net y marcar solo "nombre de usuario" y "contraseña".

Entonces, ¿puedo sobrecargar el método ValdiateUser()? ¿O tendré que escribir el mío para manejar este nuevo caso?

¿Dónde almacenaría este campo de "institución" en la base de datos? Escuché algo sobre personas que recomiendan la tabla "Perfil", pero no estoy seguro.

También cómo puedo cambiar el número de miembros para tratar estos como 3 usuarios diferentes

Institución: ABC Nombre de usuario: A09410515 Contraseña: 1234567

Institución: GHA Nombre de usuario: A09410515 Contraseña: 1234567

Nombre de usuario: A09410515 Contraseña: 1234567

Así como mi la base de datos debería preocuparse, estos deberían ser 3 usuarios únicos. Por supuesto, en el caso de que mi base de datos ya tenga la misma información almacenada en ella.

Por ejemplo.

Institución: ABC Nombre de usuario: A09410515 Contraseña: 1234567

y alguien intenta registrarse con la misma información exacta para "nombre de usuario" y "Institución", entonces sería escupir de vuelta un error acerca de ser nombres duplicados.

Respuesta

15

Sí, puedes create a custom membership provider. Su proveedor implementará MembershipProvider que le da control total sobre la creación de una interfaz entre el sistema de membresía y el esquema de base de datos extendida. Writing A Custom Membership Provider for your ASP.NET 2.0 Web Site es un ejemplo detallado.

+0

Hola Gracias por los enlaces. Todavía estoy un poco confundido. ¿Dónde puedo almacenar estos campos adicionales que estaría agregando? ¿Como lo agrego al perfil o qué? Al igual que estoy haciendo un proveedor personalizado para que pueda combinar mi db asp.net y mi db juntos, pero estoy usando el servidor mssql. También noté que anulan esos métodos. Todavía quiero usar el método de verificación predeterminado. Entonces hago 2 métodos de sobrecarga. ¿Una con mi verificación personalizada y un método para llamar al método de verificación predeterminado? – chobo2

2

La manera perezosa de hacer esto sería combinar la institución y el nombre de usuario para crear el nombre de usuario real.

Así que tendría 3 nombres de usuario distintos: ABC & A09410515, GHA & A09410515, y & A09410515. Simplemente no permita que un usuario use & en un nombre de usuario.

Luego, antes de crear al usuario o iniciar sesión simplemente combine las dos cadenas.

No puedo pensar en los problemas más importantes que no se pueden arreglar con un simple truco (por ejemplo, mostrando el nombre de usuario (usar username.split ('&') [1]), pero después de JP es definitivamente la forma "correcta" de hacerlo.

James

1

Usted puede utilizar Nombre de la aplicación como la institución, de esa manera se podría tener el mismo nombre de usuario en diferentes aplicaciones

Rodrigo.

Cuestiones relacionadas