none
Problema en registro de usuarios servicio REST ¿no se porque pasa? ¡¡ayuda!!. RRS feed

  • Pregunta

  • Muyu buenas hay algo que no entiendo sinceramente porque esta pasando en esta parte del codigo en mi app web necesito que el usuario al enviar el nombre, contraseña y email el nombre se ponga en el campo de la base de datos Nombre es una base de datos que podeis ver que esta en PostgreSQL la idea es que es libre.

    El problema esta en esta parte del codigo que se puede encontrar aqui:

    https://github.com/onzulinapps/planningactivities/blob/master/RestAPIPlanningActivities/Controllers/UsuariosRestController.cs

    en esta parte del codigo pongo

    var User = new ApplicationUser { UserName = model.Email, Email = model.Email };

    pero si pongo mode.Nombre no se porque no me funciona el regisrtro de usuarios ni para atras lo he probado y no tira, ¿porque puede estar pasando eso?

    // POST: api/UsuariosRest
    
            [ResponseType(typeof(AspNetUsers))]
            public async Task<HttpResponseMessage> PostUsuarios(RegisterViewModel model)
            {
                db.Database.Connection.Open();
    
                IdentityUser user = new IdentityUser
                {
                    UserName = model.Nombre,
                    Email = model.Email
                };
                //creamos este objeto aqui y luego ya lo usamos segun necesitemos mandar el ok al telefono o que no se ha procesado la solicitud
                HttpResponseMessage response = new HttpResponseMessage();
                //llamar al objeto UserManager
                var User = new ApplicationUser { UserName = model.Email, Email = model.Email };
                var result = await UserManager.CreateAsync(User, model.Password);
                //probaremos a utilizar model.Nombre en el campo nombre de la base de datos
                // y a ver si no falla
                /* esto lo mismo lo tengo que hacer en otro sitio
                IEnumerable<AspNetUsers> Usuarios;
                Usuarios = db.AspNetUsers.ToList();
                //selecciono el usuario para saber a que usuario hay que editarle la informacion
                IEnumerable<bool> UsuarioSelect = Usuarios.Select(usuario => usuario.Email == model.Email);
                string UserSelect = UsuarioSelect.ToString();
                */
    
                    /*
                    AspNetUsers Users = new AspNetUsers();
                    Users.Nombre = model.Nombre;
                    db.SaveChanges();
                    */
                    if (result.Succeeded)
                    {
                        //UrlHelper urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext, RouteTable.Routes);
                        string callbackUrl = await SendEmailConfirmationTokenAsync(User.Id, "Confirm your account");
                        response.StatusCode = HttpStatusCode.OK;
                        return response;
                    }
                    else
                    {
                        response.StatusCode = HttpStatusCode.BadRequest;
                        return response;
                    }
    
    
            }
    Basicamente el problema lo tengo ahi y logueo de usuarios tambien deja de funcionar logicamente porque el registro no funciona una cosa rara, ¿cual puede ser el problema?

    jueves, 9 de julio de 2015 11:33

Respuestas

  • el método var result = await UserManager.CreateAsync(User, model.Password);
                es el que te falla? Has probado en,poner un punto de ruptura dentro del método para depurar?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 10 de julio de 2015 15:53
    Moderador

Todas las respuestas

  • hola

    >>es una base de datos que podeis ver que esta en PostgreSQL la idea es que es libre.

    Sql Server Express tambien es libre

    >>pero si pongo mode.Nombre no se porque no me funciona el regisrtro de usuarios ni para atras lo he probado y no tira

    que es problado para atras ? que significa que no tira ? no muestra la propiedad en la lista de propiedades que el VS desplega

    imagino que la clase RegisterViewModel tiene estas propiedades definidas, no ?

    >>¿cual puede ser el problema?

    como invocas desde el cliente este method del webapi ? lo llamas pasando un json?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 9 de julio de 2015 13:54
  • Pues la clase RegisterViewModel la tienes aqui

    public class RegisterViewModel
        {
            [Required]
            [EmailAddress]
            [Display(Name = "Correo electrónico")]
            public string Email { get; set; }
    
            [Required]
            [StringLength(100, ErrorMessage = "El número de caracteres de {0} debe ser al menos {2}.", MinimumLength = 6)]
            [DataType(DataType.Password)]
            [Display(Name = "Contraseña")]
            public string Password { get; set; }
    
            [DataType(DataType.Password)]
            [Display(Name = "Confirmar contraseña")]
            [Compare("Password", ErrorMessage = "La contraseña y la contraseña de confirmación no coinciden.")]
            public string ConfirmPassword { get; set; }
    
            [Required]
            [Display(Name = "nombre requerido")]
            public string Nombre { get; set; }
        }

    Aqui te pongo la clase AplicationUser  que tambien es importante es quien gestiona los datos

     public class ApplicationUser : IdentityUser
        {
            public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
            {
                // Tenga en cuenta que el valor de authenticationType debe coincidir con el definido en CookieAuthenticationOptions.AuthenticationType
                var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
                // Agregar reclamaciones de usuario personalizado aquí
                return userIdentity;
            }
        }
    

    si lo invoco pasando los datos por json cuando invoco el registro de usuario y creo que en esoi no hay nignun problema al menos depurando no lo parece.
    Llevas razon SQL Server Express es gratis y funciona muyy bien, pero estoy utilizando PostgreSQL por ser libre y porque quiero portar este proyecto de web api + web asp.net mvc5 a 6 y sobre todo que funcione ne linux y en linux SQL Server no funciona, dependeria siempre de Windows y por eso quiero usar PostgreSQL, saludos tio.

    viernes, 10 de julio de 2015 14:40
  • el método var result = await UserManager.CreateAsync(User, model.Password);
                es el que te falla? Has probado en,poner un punto de ruptura dentro del método para depurar?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 10 de julio de 2015 15:53
    Moderador
  • también con qué nombre te falla? Con aquellos con tilde o caracteres como la ñ??

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 10 de julio de 2015 15:57
    Moderador