个性化用户配置
一、简介
为用户提供自定义的外观、内容、布局,当用户再次访问的时候,用户还能看到自己原来的设定。
二、个性化的三大步骤
1. 识别用户身份
要建立验证用户身份的机制
创建识别用户需求的机制
创建管理用户的机制
2. 提供个性化服务
针对注册和匿名用户提供不同的服务
3. 存贮用户信息
可以保存用户的相关信息,以方便下次使用,包括用户的登陆信息
三、实现个性化服务的三大功能
1. 个性化用户配置
2. WEB部件
3. 成员和角色管理
四、为匿名用户进行个性化设置
web.config配置
<anonymousIdentification enabled="true"/>
<profile>
<properties>
<add name="Name" allowAnonymous="true" />
<add name="LastSubmit" type="System.DateTime" allowAnonymous="true"/>
<group name="Address">
<add name="City" allowAnonymous="true"/>
<add name="PostalCode" allowAnonymous="true"/>
</group>
</properties>
</profile>
代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//显示用户配置信息
DisplayProfileInfo();
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
//保存用户配置信息到Profile属性中
Profile.Name = txtName.Text;
Profile.Address.City = txtCity.Text;
Profile.Address.PostalCode = txtPostalCode.Text;
Profile.LastSubmit = DateTime.Now;
//显示用户配置信息
DisplayProfileInfo();
}
private void DisplayProfileInfo()
{
//从Profile属性中获取数据并赋值给服务器控件
txtName.Text = Profile.Name;
txtCity.Text = Profile.Address.City;
txtPostalCode.Text = Profile.Address.PostalCode;
DateTime time = Profile.LastSubmit;
//如果未获取值则显示空,否则显示获取的值
if (time.Year == 1)
{
labLastSubmit.Text = "空";
}
else
{
labLastSubmit.Text = time.ToString();
}
}
五、为注册用户实现个性化用户配置
web.config配置
<connectionStrings>
<add name="NorthwindConnectionString" connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<profile>
<properties>
<add name="ShoppingCart" type="ShoppingCart" serializeAs="Binary"/>
</properties>
</profile>
<authorization>
<deny users="?"/>
</authorization>
<authentication mode="Forms">
<forms loginUrl ="Login.aspx"></forms>
</authentication>
代码示例:code 13-2
六、匿名用户转化为注册用户的处理
Global.asax中的设置
void Profile_MigrateAnonymous(Object sender, ProfileMigrateEventArgs pe)
{
//获取匿名用户的Profile对象
ProfileCommon anonProfile = Profile.GetProfile(pe.AnonymousID);
//如果总价为不为0(说明匿名用户进行了选择),则将匿名用户的Profile存储起来
if (anonProfile.ShoppingCart.Total != 0)
{
Profile.ShoppingCart = anonProfile.ShoppingCart;
}
//删除匿名用户的用户数据(从aspnet_Users表)
Membership.DeleteUser(pe.AnonymousID);
//删除匿名用户的Profle数据(从aspnet_Profile表)
ProfileManager.DeleteProfile(pe.AnonymousID);
//删除匿名用户标识
AnonymousIdentificationModule.ClearAnonymousIdentifier();
}
示例代码:code 13-3
七、删除个性化信息
删除匿名用户的个性化信息
ProfileManager.DeleteProfile(Context.Request.AnonymousID)
删除注册用户的个性化信息
ProfileManager.DeleteProfile(User.Identity.Name)