jueves, 23 de febrero de 2012

Videotutorial ASP.NET Membership/Roles (Máster en Tecnologías Web)

En este videotutorial se muestra como implementar Autenticación y Autorización usando los controles de Login de ASP.NET, la clase Membership y la clase Roles que nos ofrece el Framework, así como la herramienta de Administración Web que nos aporta Visual Studio para configurar Membership de forma rápida y sencilla . Con este videotutorial vamos a poder crear una autenticación y autorización muy rápida y completa gestión de usuarios gracias al Framework de .NET.

42 comentarios:

  1. Hola buenas noches, vengo de youtube donde vi tu vídeo la primera vez, me dijiste que pasara por aquí para cualquier duda, te dejo el comentario que hice en youtube, espero puedas ayudarme;

    "Muy buen video me ha ayudado mucho, tengo una pregunta, a los usuarios que se inscriban por medio del formulario que has creado hay alguna forma que se les pueda cambiar el rol ? a cliente por ejemplo desde el panel de administración del admin ? Te agradecería mucho la respuesta, ya que eso es lo que me falta ahora para terminar mi aplicación"

    ResponderEliminar
    Respuestas
    1. Muy buenas, supongo que con el panel de administración te refieres a la herramienta de administración web que ofrece Visual Studio? si es así, en la herramienta web pulsas la pesataña "Seguridad" y tendras una opción de "Administrar Usuarios", ahí ves los usuarios que hay en la base de datos. Cada Usuario tendrá una opción de "Editar Funciones" (Si lo tienes en español, sino debe poner Edit Roles). Si pulsas ahí puedes agregar el usuario al rol que quieras.

      La otra opción que es la que te recomiendo es cambiarlo por código, con la clase Roles, utilizando el método AddUserToRole.

      Cualquier problema no dudes en consultarme.

      Un Saludo

      Eliminar
  2. Buenas, a lo que me refería es si se pueden asignar o modificar las funciones o roles que tienen los usuarios fuera del panel que nos proporciona visual studio para eso, es decir si se puede construir una opción en el área de gestión de usuarios realizada en el vídeo para así poder tener control total sobre las funciones de los nuevos usuarios que se inscriban en el sitio sin la necesidad de entrar en visual studio para cambiar esto sino simplemente accediendo al área de gestión de usuario como administrador del sitio.

    Gracias por tu ayuda.

    ResponderEliminar
    Respuestas
    1. Muy buenas, claro que se puede, para ello tienes que hacer uso de la clase Roles. Esta clase tiene un método que se llama AddUserToRole, este método te pide dos parámetros, el nombre del usuario y el nombre del rol al que lo quieres asignar.

      Así que simplemente créate en la parte de administración de usuarios un apartado que sea asignar roles, en el que cojas el nombre de usuario que quieres editar y el rol que le quieres asignar y en el evento onclick del botón utilizas la clase y el método que te he dicho anteriormente.

      Un Saludo

      Eliminar
  3. Buenas, primero que todo decir que es excelente el tutorial, pero actualmente poseo una duda. Si yo tengo implementada una base de datos por defecto y tengo los usuarios registrados en ese lugar y además de esto tengo una tabla de roles ¿Cómo puedo hacer para integrar esos roles sin tener que crear una base de datos nueva como se indica en el vídeo?, Muchas gracias por la ayuda.

    ResponderEliminar
    Respuestas
    1. Muy buenas Pablo,

      Para importar tus tablas propias de usuarios y roles, mi recomendación es que lo hagas por código utilizando los métodos que nos ofrecen las clases Membership y Roles.

      No creo que puedas hacerlo de otra manera, ya que al generar la base de datos de Membership esta genera una serie de campos encriptados que no coincidirán con los de tus tablas.

      Para hacerlo como te indico, simplemente tendrás que recorrer tus tablas de tu base de datos e ir llamando a los métodos. Por ejemplo para añadir los roles, recorres tu tabla y en cada fila invocas el método Roles.CreateRole(nombreRol);

      También deberás hacer lo mismo con la tabla de usuarios y podras crearlos mediante Membership.CreateUser(nombreUsuario, password);

      Finalmente para añadirlos al rol que tengan... Roles.AddUserToRole(nombreUsuario, NombreRol);

      Así importarás los datos de tus tablas a la base de datos generada por Membership de forma rápida y sencilla.

      Cualquier problema estaré encantado de echarte una mano siempre que pueda.

      Un Saludo!

      Eliminar
  4. Hola,antes que nada queria decirte que el tutorial es excelente,y me ayudo mucho. queria hacerte una pregunta: como podria hacer para implementar este tipo de gestion de usuarios, y a su vez, guardar datos sobre el mismo, como ser edad,direccion,etc...se pueden almacenar en la misma tabla o se podrian vincular de alguna forma?saludos y desde ya muchas gracias!

    ResponderEliminar
    Respuestas
    1. Muy buenas Luis, gracias por tu comentario.

      Lo que te recomiendo es que no modifiques la tabla de usuarios que te genera Membership, te va a causar problemas. Lo más sencillo es que añadas una tabla de datos extra del usuario. Esta tabla con datos extra debe tener el identificador del usuario como clave primaria, y luego hacer una relación 1:1 con la tabla de usuarios.

      El siguiente paso sería modificar el control CreateUserWizard para que te permita introducir los datos nuevos de la tabla extra. Para ello tienes que añadir un nuevo paso (Step), en el control, y añadir los TextBox o datos del formulario que necesites.

      Luego tendrías que controlar algún evento del control CreateUser que te permita coger los datos e insertarlos en la tabla de datos extra.

      Cualquier problema no dudes en consultarme, estaré encantado de echarte una mano siempre que el tiempo me lo permita. Un Saludo!

      Eliminar
  5. hola que tal mi problema es que estoy haciendo una aplicacion ya tengo la gestion de usuarios pero lo que pasa es que quiero que se muestre un menu conforme al rol lo que intentaba es que ponia el menu que nos ofrece el framework y ocultara los items que le asignaba al menu pero no puedo o una forma de poder realizar mi menu conforme al rol espero me puedas ayudar

    ResponderEliminar
    Respuestas
    1. Buenas, con un menú conforme al rol, supongo que lo que quieres es gestionar los usuarios separados por rol?

      Para ello puedes utilizar la clase Roles, en esta clase tienes distintos métodos que te ayudaran a gestionar los Roles y los Usuarios. Utiliza Roles.GetUsersInRole("nombreRol"), este método te devuelve un String[] con los usuarios pertenecientes a "nombreRol". Podrías si quieres separar los usuarios en distintos GridView filtrados por rol.

      El control Menu del Framework es un control de Navegación, está pensado para navegar entre distintas páginas de tu aplicación Web, supongo que esto no es lo que quieres hacer, por lo tanto no uses ese control, create tu tus propias opciones por código o a través del GridView gestiona los distintos usuarios.

      Eliminar
  6. otra pregunta para la gestion de usuarios como puedo eliminarlos es similar a lo de buscar ??? solo cambiando el lugar de buscar que elimine del membership esque lo quiero hacer desde el gridview y tambien lo quiero modificar

    ResponderEliminar
    Respuestas
    1. Para la gestión de usuarios tienes la clase Membership con métodos ya implementados que te ayudarán a hacer una completa gestión de forma rápida.

      Utiliza Membership.DeleteUser("UserName"), para eliminar cualquier usuario por código. Simplemente create un TextBox con un botón, introduce el userName que quieras en el textbox y en el evento click del botón llamas al método Membership.DeleteUser( ... ); pasandole el userName por parámetro.

      Puedes hacerlo de esa forma o a través del botón de eliminación del gridView.

      Eliminar
  7. http://img16.imageshack.us/img16/5364/32882235.jpg
    esto es lo pretendo hacer cuando le de click me en editar memande a otra interface con el usuario que voy a modificar tendo datos personales en otra tabla y cuando le de eliminar usuario me elimine los datos personales que tambien tengo

    ResponderEliminar
    Respuestas
    1. Buenas, si quieres añadir opciones de edición o eliminación en el GridView tendrás que utilizar los CommandFields que vienen por defecto.

      Te dejo un videotutorial con todos los pasos, en el que pude ver como se añaden los botones de eliminación al GridView: http://www.youtube.com/watch?v=zZFH1pszBnE

      Te dejo otro videotutorial bastante bueno, que explica como puedes añadir, edita, eliminar, etc... con las opciones del GridView: http://www.youtube.com/watch?v=IdFFEH1I2Bg

      Si lo que quieres no es eso, y quieres botones en el gridView que te manden a otro WebForm donde editar los datos del usuario, deberás controlar el evento RowCommand, y ahí puedes coger el identificador del usuario seleccionado, y reenviarlo a otra página por código, y simplemente al cargar la otra página coger el id y mostrar los datos de ese usuario en un formulario.

      Te dejo un videotutorial, en el que explica como utilizar el evento: http://www.youtube.com/watch?v=8m5f5LB6-GY&feature=channel&list=UL

      Espero que te sea de ayuda, siento no disponer de más tiempo para explicarte algo más detallado. Un Saludo!

      Eliminar
    2. gracias por tus respuestas me as eyudado de mucho a y para la gestion de usuarios voy a utilizar esta forma
      http://msdn.microsoft.com/es-es/library/ms178429.aspx
      para poder crear mi menu conforme a mis perfiles graacias por tu ayuda

      Eliminar
  8. hola qu tal tengo otra duda en la de recuperacion de contraseña quiero que ponga el correo electronico mas no el nombre de usuario como le puedo hacer

    ResponderEliminar
    Respuestas
    1. Muy buenas Zirba.

      No me queda claro si tu dudas es que quieres que apareza el email en vez del username en el cuerpo del correo electrónico de recuperación de contraseña, o quieres cambiar los datos de entrada del control PasswordRecovery.

      Si es lo primero simplemente deberás poner <%Email%> en el cuerpo del mensaje.

      Si es lo segundo, por defecto no te deja cambiar automaticamente el campo del control PasswordRecovery, deberás hacer algunos cambios en el contro a mano. Te dejo un link en el que se explica paso a paso: http://forums.asp.net/t/1334143.aspx/1 , espero que te ayude.

      Un Saludo

      Eliminar
    2. gracias por tu ayuda me as ayudado mucho la verdad gracias

      Eliminar
  9. Buen día

    Encontré tu videotutorial sobre membership/roles de asp.net. Estoy desarrollando una aplicación web, y quisiera saber si existe la posibilidad de personalizar este tipo de administración de usuarios, ya que por ejemplo, en mi aplicación, todo se basa en la zona a la que pertenece el usuario. Existen 4 zonas: norte, sur, bajío y pacífico, y pdeor cada zona hay administradores, gerentes y supervisores, estos serían mis roles.

    Lo que necesito es controlar el acceso por zona y por rol, esto sería posible utilizando membership/roles de asp.net?


    Agradezco tu atención, que tengas excelente fin de semana.

    ResponderEliminar
  10. Buenas tardes,

    felicidades por el tutorial.

    He intentado poner en producción una solución siguiendo este tutorial donde la información se almacena en un servidor sql.

    El error aparece cuando intento acceder desde web ( en local funciona perfectamente) me da error.

    Como puedo modificar [...] name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
    providerName="System.Data.SqlClient" [...]

    Para que apunte a esa base de datos dentro del servidor web sql? , en este caso la bbdd mdf está en httpdocs/App_Data/aspnet.mdf

    Muchas gracias por todo.


    ResponderEliminar
    Respuestas
    1. Muy buenas,

      Si me puedes copiar el mensaje de error que te da al acceder a la web desde fuera del servidor quizás pueda ayudarte mejor.

      Tiene pinta de que sea por la configuración de SQL Server en el servidor. Supongo que tienes un servidor de prueba (IIS) en tu pc, Windows7?, en el que todo te funciona perfectamente, y es al desplegar en el servidor de despliegue dónde no te funciona no? tienes un Windows Server 2008 o algo así?. Comprueba que en el servidor tienes todo correcto, el grupo de aplicaciones del framework 4.0, etc.

      Tal cual tienes el contenido desplegado en tu pc, en la carpeta inetpub/wwwroot/nombre de tu proyecto, copia ese contenido y pégalo en tu servidor de despligue.

      En IIS de tu servidor de despliegue supongo que has creado una aplicación dentro de Default Web Site, utilizando el puerto 80 (por defecto), deberías tener asignado un grupo de aplicaciones DefaulAppPool (si has utilizado el framework 4 cuidado con esto), y le indicas la ruta del intepub/wwwroot donde has copiado los ficheros desplegados.

      Dame un poco más de info y espero poder ayudarte.

      Un Saludo.

      Eliminar
  11. Feliz tarde, quisiera saber si se pueden asignar los roles automaticamente al momento de enviar el formulario de registro y como se genera eso.

    ResponderEliminar
  12. en primer lugar!! enhorabuena!! es el mejor vídeo que he encontrado sobre el tema!!

    y también ... genial seria un vídeo sobre "WEB DEPLOY" y configuraciones SERVIDOR para publicar la aplicación!

    un saludo!

    RU

    ResponderEliminar
    Respuestas
    1. Muy buenas René, gracias por tu comentario.

      Tendré muy en cuenta tu sugerencia para futuros videotutoriales, sobre despligue en servidor Web que siempre suele ser complicado al principio para gente con poca experiencia.

      Cualquier problema que tengas no dudes en consultarme a través del blog, estaré encantado de ayudarte siempre que el tiempo me lo permita. Un Saludo!

      Eliminar
  13. Muchas gracias por el tuto amigo, me sirvio para mi proyecto , pero quisiera ver si me puedes ayudar, pues cuando envio la contraseña para recuperarla al correo del cliente, esta se me envia pero como caracteres, es decir se resetea la contraseña y me genera una nueva la cual me la manda al correo como un conjunto de numeros y letras, quisiera saber como configurar para que no me resetie la contraseña y me mande la que estaba establecida originalmente asi como en tu video, no encuentro la solucion, ya e buscado pero nose donde este el problema, ya intente poniendo laconfiguracion de no reset y nada, espero me puedas ayudar o si es posible me puedas pasar tu proyecto para averiguar que es lo que me falla. Saludos!!!!

    ResponderEliminar
    Respuestas
    1. Muy buenas Anonymous,

      Supongo que tu problema no es que te genere una nueva contraseña, sino que te envía la contraseña del usuario encriptada. La gestión de usuarios Membership de ASP.NET tiene una variable que podemos configurar a través del Web.Config que es "enablePasswordRetrieval" que por defecto está a false.

      Además debes tener en cuenta el tipo de encriptación de contraseñas que estás utilizando, en este enlace puedes ver los 3 tipos de contraseñas que puedes utilizar: http://msdn.microsoft.com/en-us/library/system.web.security.membershippasswordformat.aspx

      Los 3 tipos son Clear, texto plano (no recomendada), Hashed (encriptación basada en el algoritmo SHA1), y Encrypted. El formato de encriptación Hashed creo que es el que viene por defecto, este tipo de encriptación no permite la recuperación de contraseña desencriptada, por lo que te recomiendo que utilices el formato "Encrypted".

      Para esto deberás hacer la conexión a Membership a mano en el Web.Config, deberás tener una cadena de conexión a la base de datos (connectionstring), que te conectará a la base de datos de membership generada y luego podrás configurar las propiedades de Membership que quieras, como el passwordFormat y el enablePasswordRetrieval. Te dejo un ejemplo:







      Si tienes el problema de que se te regenera la contraseña, quizás sea por la propiedad enablePasswordReset. Este código deberá en el Web.Config dentro del nodo , te dejo un ejemplo completo:




















      Te dejo unos enlaces para que te leas, que puede que te aclaren el problema, ahí viene toda la información paso a paso:
      Propiedaes Membership: http://msdn.microsoft.com/en-us/library/a28ctsa5.aspx
      EnablePasswordRetrieval: http://msdn.microsoft.com/en-us/library/system.web.security.membership.enablepasswordretrieval.aspx

      Espero haber sido de ayuda. Cualquier duda estaré encantado de ayudarte a través del blog, siempre que el tiempo me lo permita.

      Un Saludo,
      Antonio Hernández.

      Eliminar
    2. Disculpa, te reenvío la respuesta ya que no se han mostrado los códigos de ejemplo. Un Saludo!

      Supongo que tu problema no es que te genere una nueva contraseña, sino que te envía la contraseña del usuario encriptada. La gestión de usuarios Membership de ASP.NET tiene una variable que podemos configurar a través del Web.Config que es "enablePasswordRetrieval" que por defecto está a false.

      Además debes tener en cuenta el tipo de encriptación de contraseñas que estás utilizando, en este enlace puedes ver los 3 tipos de contraseñas que puedes utilizar: http://msdn.microsoft.com/en-us/library/system.web.security.membershippasswordformat.aspx

      Los 3 tipos son Clear, texto plano (no recomendada), Hashed (encriptación basada en el algoritmo SHA1), y Encrypted. El formato de encriptación Hashed cre que es el que viene por defecto, este tipo de encriptación no permite la recuperación de contraseña desencriptada, por lo que te recomiendo que utilices el formato "Encrypted".

      Para esto deberás hacer la conexión a Membership a mano en el Web.Config, deberás tener una cadena de conexión a la base de datos (connectionstring), que te conectará a la base de datos de membership generada y luego podrás configurar las propiedades de Membership que quieras, como el passwordFormat y el enablePasswordRetrieval. Te dejo un ejemplo:

      < membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20" >
      < providers >
      < add name="SqlProvider"
      type="System.Web.Security.SqlMembershipProvider"
      connectionStringName="SqlServices"
      enablePasswordRetrieval="true"
      enablePasswordReset="false"
      requiresQuestionAndAnswer="false"
      passwordFormat="Encrypted"
      applicationName="MyApplication" / >
      < /providers >
      < /membership >

      Si tienes el problema de que se te regenera la contraseña, quizás sea por la propiedad enablePasswordReset. Este código deberá en el Web.Config dentro del nodo , te dejo un ejemplo completo:

      < configuration >
      < onnectionStrings >
      < add name="MySqlConnection" connectionString="Data
      Source=MySqlServer;Initial Catalog=aspnetdb;Integrated
      Security=SSPI;" / >
      < /connectionStrings >
      < system.web >
      < authentication mode="Forms" >
      < forms loginUrl="login.aspx"
      name=".ASPXFORMSAUTH" />
      < /authentication >
      < uthorization >
      < deny users="?" />
      < /authorization >
      < membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20" >
      < providers >
      < add name="SqlProvider"
      type="System.Web.Security.SqlMembershipProvider"
      connectionStringName="MySqlConnection"
      enablePasswordRetrieval="true"
      enablePasswordReset="false"
      requiresQuestionAndAnswer="false"
      passwordFormat="Encrypted"
      applicationName="MyApplication" / >
      < /providers >
      < /membership >
      < /system.web >
      < /configuration >

      Te dejo unos enlaces para que te leas, que puede que te aclaren el problema, ahí viene toda la información paso a paso:
      Propiedaes Membership: http://msdn.microsoft.com/en-us/library/a28ctsa5.aspx
      EnablePasswordRetrieval: http://msdn.microsoft.com/en-us/library/system.web.security.membership.enablepasswordretrieval.aspx



      Un Saludo,
      Antonio Hernández.

      Eliminar
  14. holla..También he publicado en YouTube me dijiste que te deje aquí un comentario... a mi en el campo de seguridad me dice: There is a problem with your selected data store. This can be caused by an invalid server name or credentials, or by insufficient permission. It can also be caused by the role manager feature not being enabled. Click the button below to be redirected to a page where you can choose a new data store.
    The following message may help in diagnosing the problem: Could not load type 'MyProject.Global'. y no sé qué hacer:(

    ResponderEliminar
    Respuestas
    1. Muy buenas Madalina, disculpa mi retraso en contestarte, me has pillado de vacaciones.

      Ese mensaje suele salir cuando ocurre un problema de conexión al servidor de base de datos. Debes comprobar que tienes acceso a tu servidor de base de datos.

      Supongo que si estás haciendo pruebas tienes en local un servidor SQL Server, cuando pulsas en la configuración de aplicaciones ASP.NET, ves una pestaña que pone Proveedor, en esta pestaña puedes configurar la conexión al servidor SQL server.

      Supongo que tienes instalado SQL Server Magament Studio para acceder al servidor, crear tablas, configurar permisos, etc... si no lo tienes debes instalarlo.

      En la base de datos pulsa botón derecho Propiedades y en la pestaña de Seguridad, comprueba que tienes seleccionada la opción "SQL Server and Windows Authentication Mode", para permitir la conexión a la base de datos tanto por autenticación windows como por usuarios creados en la base de datos.

      Intenta comprobar esto y si sigues teniendo problemas vuelve a consultarme a ver si conseguimos solucionarlo. Un Saludo!

      Eliminar
  15. Que tal! Vi el vídeo en youtube y vengo acá por que hice una pregunta. Te dejo con el comentario:

    ---Muy buen video! Espero que sigas haciendo mas es de mucha ayuda la vdd. Solo tengo una pregunta en mi proyecto tengo que agregar mas datos al agregar un cliente, como numero de telefono, pais, etc.. pero como lo agrego en la herramienta de administración de sitios web? ya que ahí solo me aparece 6 campos... Nuevamente gracias..---

    ResponderEliminar
    Respuestas
    1. Muy buenas,

      Para añadir nuevos campos a la tabla de Users de Membership, lo que te recomiendo es que te crees una tabla en la base de datos "DatosUsuario" por ejemplo y relaciones la tabla 1:1 con la tabla Users que te genera Membership.

      Esta tabla "DatosUsuario" tendrá como clave primaria, la misma clave que la tabla Users, y además puedes añadir los campos que quieras... teléfono, localidad, DNI, etc.

      Posteriormente lo que debes hacer es crear un nuevo "Step" (paso) en el control CreateUserWizard, he incluir los campos que necesites (Textbox necesarios para que el usuario introduzca los datos de localidad, teléfono, etc...).

      Una vez tengas hecho esto, deberás implementar alguno de los eventos del control CreateUserWizard, como "CreatedUser" o "ContinueButton" (a lo mejor no tienen ese nombre exacto, te lo digo de memoria). En este evento deberás añadir por código los datos extra del usuario, coges el UserId y los datos del formulario y lo agregas a la nueva tabla "DatosUsuario".

      Para coger el UserId:

      MembershipUser usuario = Membership.GetUser();
      Guid idusuario = System.Guid.Parse(usuario.ProviderUserKey.ToString());

      Si no tienes ninguna experiencia es un poco complejo, ya que tienes que hacerlo a mano por código, creo que no hay manera de hacerlo de forma visual a través de la herramienta de configuración de ASP.NET.

      Espero haber sido de ayuda.

      Un Saludo,
      Antonio Hernández.

      Eliminar
    2. Muchas Gracias! Le agarre la idea de lo que se tiene q hacer, pero la verdad es que soy nuevo en esto y no tengo mucha experiencia, pero estaremos intentando todo.
      Cuando se decida a hacer un tutorial con esa explicación, seria bastante bueno, y estaremos atentos. Nuevamente Gracias.

      Eliminar
  16. Hola, me ha gustado mucho tu video y también me ha servido demasiado. Gracias a ti pude hacer un proyecto (semejante al tuyo, sólo le agregué otras cosas), aunque tuve varias complicaciones con las que lidié día y noche pero salí avante. Ahora, tengo una master page y de ahí una página de contenido llamada "envio de quejas y sugerencias" es un formulario sencillo, intento que se envíe a mi correo de gmail. He intentado con código que he encontrado en internet pero no he logrado enviar los datos del formulario, no hace "nada". Quería saber si es mi código o qué es, porque la pagina de contenido donde recupero la contraseña sí lo hace (usando passwordrecovery). Espero tu respuesta, saludos.

    System.Net.Mail.MailMessage correo = new System.Net.Mail.MailMessage();
    correo.From = new System.Net.Mail.MailAddress(txtEmail.Text);
    correo.To.Add("micorreo@gmail.com");
    correo.Subject = txtTitulo.Text;
    txtMensaje.Text += "\n\nFecha y hora GMT: " +
    DateTime.Now.ToUniversalTime().ToString("dd/MM/yyyy HH:mm:ss");
    correo.Body = txtMensaje.Text;
    correo.IsBodyHtml = false;
    correo.Priority = System.Net.Mail.MailPriority.Normal;
    //
    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
    smtp.Host = "smtp.gmail.com";
    smtp.Port = 587;
    smtp.Credentials = new System.Net.NetworkCredential("micorreo@gmail.com", "micontraseña");
    smtp.EnableSsl = true;
    try
    {
    smtp.Send(correo);
    aviso.Text = "Mensaje enviado satisfactoriamente";
    }
    catch (Exception ex)
    {
    aviso.Text = "ERROR: " + ex.Message;
    }

    ResponderEliminar
  17. Buenas Antonio, vi tu vídeo y me pareció super bueno, también que en le punto 2 vas a realizar identificación con Windows(Active directory)

    Me interesa mucho esa parte, sera que yo lo tienes?

    Muchas gracias

    ResponderEliminar
  18. Buenas tardes tengo un problema con la recuperacion de contraseña pues me la cambia por ejemplo Hola Antonio tu contraseña es &(gFMPA.UI99Wc y cuando quiero ingresar tengo que cambiarla ya intente con el codigo que sale ahi arriba de un problema similar pero me marca error espero puedas ayudarme

    ResponderEliminar
  19. Hola! vi tu video de youtube y tengo una pregunta.

    Es posible que en el Gestor de Administrador se listen los usuarios que están en ese momento conectados a la aplicación?

    Y de ser posible, tratar de botarlos o cerrarles la sesión desde el mismo Gestor?

    Gracias!
    Espero tu respuesta

    ResponderEliminar
    Respuestas
    1. Muy buenas Paulina,

      Los objetos de tipo MembershipUser, tienen la propiedad IsOnline, que es un booleano que te devuelve true o false, indicando si el usuario está online o no, de esta forma es facil que puedas hacer un listado de los usuarios que están online. Quizás este enlace pueda ayudarte:

      http://stackoverflow.com/questions/14214624/list-of-online-users-using-membership-asp-net

      En cuanto a tu segunda pregunta de cómo poder cancelar la session de un usuario online, creo que no es tan sencillo, espero que alguno de estos links, te puedan ayudar:

      http://asp.net.bigresource.com/session-Memberships-Force-User-Offline-as-admin--qLszoG0EJ.html

      http://stackoverflow.com/questions/4906378/asp-net-memberships-force-user-offline-as-admin

      Un Saludo!

      Eliminar
  20. Buenas, excelente tutorial!! , solo tengo una duda, le planteo mi caso, estoy por publicad una página web la cual estara en un servidor externo osea en la nube (www.godaddy.com) y

    1: quisiera saber si no me dara problemas la cuestion de estar logueandome desde internet o requiere de una configuracion adicional.

    2: cada vez que se cree un usuario se tendra que subir la base de datos creada por Visual Studio ?

    y gracias por la ayuda.

    ResponderEliminar
  21. hey como hacer que cuando un usuario sin privilegios quiera acceder a una pagina para admin no de error si no un mensaje solamente

    ResponderEliminar
  22. Hola como estas? gracias por tu tutorial... tengo un problema yo tenia mi aplicacion con membership y tenia el passwordformat = clear, despues por un requerimiento tuve q cambiar las contraseñas a formato Hashed y bueno todo funciona bien, cuando creo un usuario su contraseña se guarda encriptada en la base de datos y cuando cambia su contraseña tambien, pero, el problema esta con los usuarios antiguos ya que sus contraseñas se crearon como Clear y al cambiarlas no se encriptan, no se si se puedan cambiar esas contraseñas a encriptadas cuando el usuario cambie su contraseña, ya que le puse un tiempo limite para que caduque la contraseña. y el usuario la cambia y se sigue guardando en el formato clear.

    muchas gracias por tu ayuda

    ResponderEliminar
  23. Buenos dias, utilzé la clase Membership pero ahora no puedo ingresar a mi aplicación, no se que pasó, solo lo puedo hacer la primera vez que ingreso con un usuariuo cuando lo creo después no gracias por la atención

    ResponderEliminar