asp.net
個人化使用者配置
一、簡介
為使用者提供自訂的外觀、內容、布局,當使用者再次訪問的時候,使用者還能看到自己原來的設定。
二、個人化的三大步驟
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)