none
Registro de usuarios en mi servicio REST RRS feed

  • Pregunta

  • Bueno de momento estoy con el registro de usuarios y he subido el proyecto porque tengo una duda, pero empezaremos a explicar realmente que necesito, el registro de usuarios lo quiero realizar con el objeto UsuariosRest que hereda de ApiController solamente me hace falta la parte de enviar el email al usuario hacerla.

    creo que es bastante importante porque me gusta como  el metodo que genera la direccion, segun cambies te genera una u otra, en el AccountController este metodo concretamente: 

     public async Task<string> SendEmailConfirmationTokenAsync(string userID, string subject)
            {
                
                
                string code = await UserManager.GenerateEmailConfirmationTokenAsync(userID);
                var callbackUrl = Url.Action("ConfirmEmail", "Account",
                   new { userId = userID, code = code }, protocol: Request.Url.Scheme);
                await UserManager.SendEmailAsync(userID, subject,
                   "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
    
                return callbackUrl;
                
            }

    Concretamente el Url.Action no lo tengo disponible en el ApiController, entoces me dieron otra solucion que la expongo aqui en codigo es un metodo del UsuariosRes:

    private async Task<string> SendEmailConfirmationTokenAsync(string userID, string subject)
            {
    
                //db.Database.Connection.Open();
                string code = await UserManager.GenerateEmailConfirmationTokenAsync(userID);
                var callbackUrl1 = string.Format("/Account/ConfirmEmail?userId={0}&code={1}", userID, code);
                var backUrl = Url.Content("http://192.168.1.4");
                var callbackUrl = backUrl + callbackUrl1;
                //var callbackUrl = Url.Action("ConfirmEmail", "Account",
                //   new { userId = userID, code = code }, protocol: Request.Url.Scheme);
                await UserManager.SendEmailAsync(userID, subject,
                   "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
    
                //return callbackUrl;
                
                return callbackUrl;
                
            }

    Como veis no me genera la direccion como el otro metodo y ademas cuando haga las pruebas depurando ejecutandolo en produccion tendre que cambiar la direccion es un follon, ¿como puedo hacer lo mismo en el ApiController que en el Controller?, os voy a dejar el codigo completamente de mi proyecto y tambien la base de datos que esta en PostgreSQL.

    aqui esta subido mi proyecto

    https://github.com/onzulinapps/RestService-asp.net

    El fichero AccountControllery el UsuariosRestController

    https://github.com/onzulinapps/RestService-asp.net/tree/master/RestAPIPlanningActivities/Controllers

    La base de datos la he subido en un fichero .sql dentro de mi carpeta de onedrive

    https://onedrive.live.com/redir?resid=e7a1e2fe2ab9ba9c!55062&authkey=!AIpcV5veua0o1rA&ithint=file%2csql

    Bueno espero que podais ayudarme muchas gracias, saludos.

    viernes, 10 de abril de 2015 12:54

Todas las respuestas

  • Bueno estoy intentando encontrar una respuesta a este problema, pero no la encuentro imaginom que tengo que generar el link con la propiedad Url de ApiController pero no tengo ni idea alguien me podria decir, gracias.
    domingo, 12 de abril de 2015 10:31
  • La forma más sencilla de conseguir lo que quieres es añadirle un nuevo parámetro al método SendEmailConfirmationTokenAsync para que reciba la url de confirmación.

    public async Task<string> SendEmailConfirmationTokenAsync(string userID, string subject, Uri callbackUrl)


    domingo, 12 de abril de 2015 11:20
  • Yo creo que como estas diciendome, no funciona, porque la URL la tengo que generar de alguna manera y justamente donde tengo el problema es en generar la URL de confirmacion juisto en esta linea de codigo

       var callbackUrl = Url.Action("ConfirmEmail", "Account",
                   new { userId = userID, code = code }, protocol: Request.Url.Scheme);

    esta mi problema no lo puedo hacer eso en un ApiController a la hora de generar la Url ¿como soluciono ese problema? el codigo lo tengo en la direccion de github.

    domingo, 12 de abril de 2015 15:09
  • Lo unico que he encontrado sobre este tema en stackoverflow es esto

    http://stackoverflow.com/questions/25245065/asp-net-web-api-generate-url-using-url-action

    Pero claro como genero mi direccion para que cuando le de el usuario como si pasa en el AccountController que lo tienes aqui en el metodo SendEmailConfirmationTokenAsync

    https://github.com/onzulinapps/RestService-asp.net/blob/master/RestAPIPlanningActivities/Controllers/AccountController.cs

    Quiero hacer eso pero aqui en el metodo de ApiController SendEmailConfirmationTokenAsync

    https://github.com/onzulinapps/RestService-asp.net/blob/master/RestAPIPlanningActivities/Controllers/UsuariosRestController.cs

    Aqui esta todo gracias

    lunes, 13 de abril de 2015 9:46
  • Necesito generar una Url mediante este metodo Url.Link Url es la propiedad de ApiController

    https://msdn.microsoft.com/es-es/library/hh944655%28v=vs.118%29.aspx

    y necesito hacer algo asi pero que se le parezca mas a

    http://localhost:2604/Account/ConfirmEmail?userId=3f6cc0bb-8216-4a77-acfc-61998677427f&code=yvSbvzwM3%2BSRKnWTYegmkJL5g7Sy1mLv%2B99s%2FmeFfKiabe0DMUcfE%2B%2FsA53Y5Fl46mbr6Z5ihOBlciTUi4JQsjgWdpSym5K8nHwS7JNBGJRbtrbXUKuDl5NR71hTa36COJVowWYiZf%2FDV5fk60P8TfeHMPZSi%2FiB%2F%2Bmv28yXwDuLvil%2Fb0nzlGJ8BjOiLWDs

    ese es el link que envio desde el Url.Link la propiedad Url de Controller

    ¿quien puede decirme como puedo configurar la direccion como yo quiera?, saludos.

    lunes, 13 de abril de 2015 13:54
  • Se ve que debo de estar preguntando algo super complicado de hacer o casi imposible cuando nadie sabe, ¿que tengo que hacer para enviar el link de confirmacion al correo electronico? ciertamente no lo entiendo, porque yo creo que esto no debe ser complicado aunque estoy preguntando porque no se como hacerlo.

    Simplemente necesito saber hacerlo porque ya cogiendo el diseño que tiene la web por defecto de registrar usuarios y mandar mail de confirmacion me parecio muy buena idea hacerlo tambien para la version de smartphone usando el servicio REST, porque si no tengo que cambiar el diseño completamente para poder usar el registro y diseñarlo yo completamente.

    Seria posible que alguien me dijera como hacer eso de generar el enlace con un metodo que se use en ApiController que lo he intentado hacer con Url.Link como he dicho un poco mas arriba, saludos y gracias. 

    sábado, 18 de abril de 2015 10:33