none
Migrar usuario anonimo

    问题

  • 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

     

     

     

     

     

    2011年9月13日 14:47

答案

  • 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

    2012年2月9日 12:50

全部回复

  • 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


    2011年9月21日 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

    2012年2月7日 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

    2012年2月9日 12:50