Identificación de usuario para las propiedades de perfil de ASP.NET

Actualización: noviembre 2007

La característica de perfiles de usuario de ASP.NET se ha diseñado para proporcionar información que es únicamente del usuario actual. Los perfiles pueden funcionar con usuarios autenticados o con usuarios anónimos (sin autenticar).

Usuarios autenticados

De forma predeterminada, el perfil de usuario se asocia a la identidad del usuario almacenada en la propiedad User del contexto HTTP actual, al que se tiene acceso a través de la propiedad HttpContext.Current. La identidad del usuario la determinan:

  • El sistema de autenticación de formularios de ASP.NET, que establece la identidad del usuario una vez que la autenticación se ha llevado a cabo correctamente.

  • La autenticación Passport o de Windows, que establece la identidad del usuario una vez que la autenticación se ha llevado a cabo correctamente.

  • La autenticación personalizada, donde se administra la obtención de las credenciales del usuario y se configura manualmente la identidad del usuario.

La autenticación de formularios de ASP.NET incluye la creación de un formulario de inicio de sesión y la solicitud de las credenciales al usuario. Puede utilizar los controles de inicio de sesión ASP.NET para crear el formulario de inicio de sesión y realizar la autenticación de formularios sin escribir código. Para obtener información sobre el uso de las características de ASP.NET para autenticar a los usuarios, vea Información general sobre controles de inicio de sesión de ASP.NET y Administrar usuarios mediante suscripciones. Para obtener información sobre la autenticación de formularios, vea Cómo: Implementar la autenticación de formularios simple.

Usuarios anónimos

Los perfiles también pueden funcionar con los usuarios anónimos. La compatibilidad con los perfiles anónimos no está habilitada de forma predeterminada, por lo que se debe habilitar de forma explícita. Por otra parte, cuando se definen las propiedades de perfil en el archivo Web.config, debe especificarse de forma explícita que cada una de ellas esté disponible para los usuarios anónimos. Las propiedades de perfil no admiten el acceso anónimo de forma predeterminada, ya que es posible que los perfiles se hayan diseñado para funcionar con usuarios autenticados, y es posible que muchas propiedades estén relacionadas con información personal que no está disponible para los usuarios anónimos.

Si se habilita la identificación anónima, ASP.NET crea una identificación única para los usuarios la primera vez que visitan el sitio. La identificación de usuario única se almacena en una cookie en el equipo del usuario para que éste pueda identificarse con cada solicitud de página. La expiración predeterminada de la cookie se establece en 70 días aproximadamente y se renueva periódicamente cuando el usuario visita el sitio. Si el equipo del usuario no acepta cookies, la identificación del usuario se puede mantener como parte de la dirección URL de la solicitud de página, aunque dicha identificación se perderá cuando el usuario cierre el explorador.

Para obtener información sobre la habilitación de la identificación anónima, vea Elemento anonymousIdentification (Esquema de configuración de ASP.NET).

Migrar la información de perfil anónima

En algunos casos, la aplicación podría estar manteniendo inicialmente información de personalización para un usuario anónimo, pero puede darse el caso de que posteriormente el mismo usuario inicie una sesión en la aplicación. En ese caso, la identidad del usuario cambia de la identidad de usuario anónimo asignada a la identidad proporcionada por el proceso de autenticación.

Cuando los usuarios inician una sesión (es decir, cuando dejan de ser usuarios anónimos), se produce el evento MigrateAnonymous. Si fuera necesario, puede controlar este evento para migrar la información de la identidad anónima del usuario a la nueva identidad autenticada. En el ejemplo de código siguiente se muestra cómo migrar información cuando se autentica un usuario.

Public Sub Profile_OnMigrateAnonymous(sender As Object, args As ProfileMigrateEventArgs)
  Dim anonymousProfile As ProfileCommon = 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)
End Sub
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);

}

Vea también

Conceptos

Información general sobre las propiedades de perfil de ASP.NET

Información general sobre las propiedades de perfil de ASP.NET

Definición de las propiedades de perfil ASP.NET

Proveedores de perfiles de ASP.NET