ASP.NET Profile屬性
作用:
存儲和使用唯一與用戶對應的信息
展現個人化版本的Web應用程序
用戶的唯一身份標識在再次訪問時識別用戶
ASP.NET Profile如何工作
你的Web應用程序運行時,ASP.NET創建一個從ProfileBase類動態繼承下來的動態生成出來的ProfileCommon類。動態ProfileCommon類包含了你在Web應用程序配置文件中指定的Profile屬性所擁有的字段。一個動態ProfileCommon類的實例被設置成了當前HttpContext的Profile屬性,並可以在應用程序的各個頁面中使用。
ASP.NET屬性的用戶身份
ASP.NET用戶Profile特性被設計用來為唯一當前用戶提供信息。Profile可以與認證用戶和匿名用戶同時使用。
認證用戶
默認地,一個用戶Profile與當前HTTP上下文(可通過System.Web.HttpContext.Current訪問)中的User屬性中存儲的用戶身份關聯。用戶身份由如下因素決定:
· ASP.NET表單審核系統,成功審核後設置用戶身份。
· Windows或者Passport審核,成功審核後設置用戶身份。
· 自定義審核,你管理用的信用憑證並手動設置用戶身份。
ASP.NET表單審核包括創建一個Login表單並提示請求用戶憑證。你可以通過使用Login控件創建Login表單和實現無編碼的表單審核。
匿名用戶
當你未經過登陸而在Web應用程序中浏覽時,持有和使用的是匿名用戶身份。這種用戶身份的用戶名是一個GUID字符串。可以通過用戶遷移方法的重載將匿名用戶轉變為審核用戶,實際上是為匿名用戶生成Profile和相應的Cookie,不過維持的狀態保存在本地電腦,如果Cookie過期或者使用其它電腦就可能導致信息丟失。
開發相關問題:
ASP.NET Profile屬性使用Form審核機制,通過Cookie維持狀態,可以保證不受會話超時影響,當然也可以設定為Sliding Expire。ASP.NET Profile屬性所持有身份Cookie的超時時間需要在Web.config文件中的forms元素上設置timeout屬性,有值的區間限制,不過可以通過設置一個較大的值來維持一個“永久”的Profile。其實Cookie超時時間過長是有安全隱患的,不過為了滿足一些需求只好使用這種方法,但記得要加密Cookie並盡量使用SSL連接保持Cookie的安全性。
ASP.NET Profile屬性的相關字段和Provider需要在Web.config文件中進行設置。而關鍵在於Provider,默認使用的是輕量級數據庫(本地數據庫文件)來支持Profile屬性,但是如果是企業級開發,注意需要使用aspnet_regsql命令去生成數據庫,當然這個數據庫可以是已經存在的數據庫,方便開發者開發已存在系統的身份驗證和審核功能。
ASP.NET Profile的另一個功能是因為數據庫存儲了Web應用服務器的各個Web應用程序的根和與其對應的身份,所以也被用來實現SSO。