ASP.NET Tutorial/Profile/Anonymous Profiles
Enable Anonymous Identification and defines a Profile property that can be modified by anonymous users.
<source lang="csharp">
File: Web.Config <configuration> <system.web>
<authentication mode="Forms" /> <anonymousIdentification enabled="true" /> <profile> <properties> <add name="numberOfVisits" type="Int32" defaultValue="0" allowAnonymous="true" /> </properties> </profile>
</system.web> </configuration>
File: Default.aspx <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">
void Page_PreRender() { lblUserName.Text = Profile.UserName; lblIsAnonymous.Text = Profile.IsAnonymous.ToString(); Profile.numberOfVisits++; lblNumberOfVisits.Text = Profile.numberOfVisits.ToString(); } protected void btnLogin_Click(object sender, EventArgs e) { FormsAuthentication.SetAuthCookie("Bob", false); Response.Redirect(Request.Path); } protected void btnLogout_Click(object sender, EventArgs e) { FormsAuthentication.SignOut(); Response.Redirect(Request.Path); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show Anonymous Identification</title>
</head> <body>
<form id="form1" runat="server">
User Name: <asp:Label id="lblUserName" Runat="server" />
Is Anonymous: <asp:Label id="lblIsAnonymous" Runat="server" />
Number Of Visits: <asp:Label id="lblNumberOfVisits" Runat="server" />
<asp:Button id="btnReload" Text="Reload" Runat="server" /> <asp:Button id="btnLogin" Text="Login" OnClick="btnLogin_Click" Runat="server" /> <asp:Button id="btnLogout" Text="Logout" OnClick="btnLogout_Click" Runat="server" />
</form>
</body> </html></source>
Migrating Anonymous Profiles
<source lang="csharp">
MigrateAnonymous event handler automatically copies the values of all anonymous Profile properties to the user"s current authenticated profile. File: Global.asax <%@ Application Language="C#" %> <script runat="server">
public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args) { ProfileCommon anonProfile = Profile.GetProfile(args.AnonymousID); foreach (SettingsProperty prop in ProfileBase.Properties) Profile[prop.Name] = anonProfile[prop.Name]; ProfileManager.DeleteProfile(args.AnonymousID); AnonymousIdentificationModule.ClearAnonymousIdentifier(); }
</script></source>
Turning on anonymous capabilities personalization properties
<source lang="csharp">
<configuration>
<system.web> <profile> <properties> <add name="FirstName" type="System.String" /> <add name="LastName" type="System.String" /> <add name="LastVisited" type="System.DateTime" allowAnonymous="true" /> <add name="Age" type="System.Integer" /> <add name="Member" type="System.Boolean" /> </properties> </profile> <authentication mode="Windows" /> </system.web>
</configuration></source>