2012-09-13 45 views
5

Estoy ejecutando una aplicación web ASP.net MVC 3 y utilizando el proveedor de membresía. Me gustaría saber si es posible permitir al usuario (o administrador) cambiar un nombre de usuario de cuentas existente? No he encontrado una manera de hacer esto. El nombre de usuario no es una dirección de correo electrónico, pero se valida por su exclusividad antes de mi intento de asignar el nuevo nombre.Cambiar el nombre de usuario ASP.net MVC 3 Membresía

¡Cualquier ayuda sería apreciada!

Respuesta

7

El proveedor de membresía no proporciona un método para actualizar el nombre de usuario. Deberá ampliar el método UpdateUser de los proveedores de membresía o interactuar directamente con las tablas de membresía para permitir este cambio. Sin embargo se acerca a esto, tener en cuenta algunos elementos

  1. En actualización, tendrá que comprobar la unicidad del nombre de usuario muy similar a lo que sucede cuando se crea un usuario.

  2. Si el usuario ha iniciado sesión y cambia su nombre de usuario, deberá forzarlos a cerrar la sesión y volver a iniciar sesión o volver a enviar la cookie de AuthenticationTicket. El motivo es que, si cambian su nombre de usuario, el cookie de autenticación authTicket almacena el nombre de usuario y el nombre de usuario real no coincide. Si usa HttpContext.Identity.User.Name para consultar su almacén de datos o verificar la autorización del contenido, ya no devolverá resultados ya que ese nombre de usuario ya no existe.

+0

¿Cómo se vuelve a emitir la cookie AuthenticationTicket? En una suposición, sugeriría invocar FormsAuthentication.SetAuthCookie(), pero tal vez usted lo sepa? –

+1

Sí, lo tienes. Básicamente, eso creará una nueva cookie de autenticación y la enviará de vuelta con la respuesta, sobrescribiendo la cookie de autenticación anterior. Lo único que puedo pensar que puede causar problemas a alguien en algún lugar es que el tiempo de caducidad de la cookie se restablecerá. – Tommy

+0

Invoqué eso con el nuevo nombre de usuario (y createPersistentCookie establecido en falso) pero descubrí que ni el nombre de usuario antiguo ni el nuevo podrían usarse para iniciar sesión. ¿Alguna idea? –

Cuestiones relacionadas