none
Migrar usuario anonimo RRS feed

  • Pregunta

  • hola, en mi aplicacion tengo definida una propiedad en el webconfig, en el Profile, aqui les dejo el codigo:

    <profile  enabled="true"  >
          <providers>
            <clear/>
            <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
          </providers>
          <properties>
            <add name="AnunciosVisitados" type="System.Collections.Generic.List`1[System.String]" allowAnonymous="true" />
            <add name="RecibirRecomendaciones" type="bool" allowAnonymous="false"/>
          </properties>
        </profile>
    


    el caso es que necesito que cuando el usuario anonimo se autentica en la aplicacion, los valores que se guardaron en la variable AnunciosVisitados para el usuario anonimo, se pasen al perfil del usuario registrado, eh visto este link:

    http://msdn.microsoft.com/en-us/library/ewfkf772.aspx

    aqui encontre este codigo

    public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
    {
      ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID);
    
      Profile.ZipCode = anonymousProfile.ZipCode;
      Profile.CityAndState = anonymousProfile.CityAndState;
      Profile.StockSymbols = anonymousProfile.StockSymbols;
    
      ////////
      // Delete the anonymous profile. If the anonymous ID is not 
      // needed in the rest of the site, remove the anonymous cookie.
    
      ProfileManager.DeleteProfile(args.AnonymousID);
      AnonymousIdentificationModule.ClearAnonymousIdentifier(); 
    
      // Delete the user row that was created for the anonymous user.
      Membership.DeleteUser(args.AnonymousID, true);
    
    }
    

    El problema es que no consigo encontrar en el intellisense algunas clases como ProfileCommon, o el metodo GetProfile, tengo que hacer algo adicionalmente?.

    Tambien quisiera saber si este codigo tiene que ir en el global.asax o  quiza en el controlador Account y si al migrar de anonimo a logged, ASP.NEt me crea un perfil para el usuario logueado como lo hace para los usuarios anonimomos.

    Muchas gracias de antemano, estare atento a sus consejos.

    Saludos cordiales

     

     

     

     

     

    martes, 13 de septiembre de 2011 14:47

Respuestas

  • Hola sebaherrera,

    yo segui un procedimiento bien simple para manejar los usuarios anonimos, no se si sea el mejor pero me funciona:

    vi que hay dos formas, una es definiendo las propiedades a las que los usuarios anonimos pueden acceder directamente en el web.config, la otra que me parece mas ordenada es definiendo una clase Perfil con todas las propiedades necesarias, y en el webconfig puedes heredar de esa clase Perfil, para que lo entierndas mejor, te dejo los links que me fueron utiles

    http://odetocode.com/articles/440.aspx (este enlace fue el mas util)

    http://www.4guysfromrolla.com/articles/120705-1.aspx

    Ojala te sirva.

    Saludos

    • Marcado como respuesta Eder Costa viernes, 26 de octubre de 2012 14:10
    jueves, 9 de febrero de 2012 12:50

Todas las respuestas

  • Hola Richof,

    Por ejemplo, en la platilla por defecto, podrias crear el profile despues del register:

     

    [HttpPost]

            public ActionResult Register(RegisterModel model)

            {

                if (ModelState.IsValid)

                {

                    // Attempt to register the user

                    MembershipCreateStatus createStatus;

                    Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

                    if (createStatus == MembershipCreateStatus.Success)

                    {

                        FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);

                        HttpContext.Profile.Initialize(model.UserName, true);

                        HttpContext.Profile.Save();

                        return RedirectToAction("Index", "Home");

                    }

                    else

                    {

                        ModelState.AddModelError("", ErrorCodeToString(createStatus));

                    }

                }

     

                // If we got this far, something failed, redisplay form

                return View(model);

            }

     

     

    Con eso crearías el perfil y ahí tendrías que copiar tus valores, en el metodo logon igual, pero siempre después de que se haga el login, es decir después de:

    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

    Un saludo!


    Colabora con el foro: Si este mensaje te es de utilidad márcalo como respuesta.

    Alfredo Fernández


    miércoles, 21 de septiembre de 2011 20:08
  • alfredo, una consulta... seteando profile enabled true + 3 propiedades para el profile, como deberiamos hacer para que al ingresar un nuevo usuario a la pagina, la base de datos cree un usuario anonimo directamente?. en el caso que destacas es para usuarios que se registran, pero como se puede manejar la persistencia en base de datos de los usuarios anonimos que maneja la aplicacion?.

    gracias

    martes, 7 de febrero de 2012 16:40
  • Hola sebaherrera,

    yo segui un procedimiento bien simple para manejar los usuarios anonimos, no se si sea el mejor pero me funciona:

    vi que hay dos formas, una es definiendo las propiedades a las que los usuarios anonimos pueden acceder directamente en el web.config, la otra que me parece mas ordenada es definiendo una clase Perfil con todas las propiedades necesarias, y en el webconfig puedes heredar de esa clase Perfil, para que lo entierndas mejor, te dejo los links que me fueron utiles

    http://odetocode.com/articles/440.aspx (este enlace fue el mas util)

    http://www.4guysfromrolla.com/articles/120705-1.aspx

    Ojala te sirva.

    Saludos

    • Marcado como respuesta Eder Costa viernes, 26 de octubre de 2012 14:10
    jueves, 9 de febrero de 2012 12:50