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。
原文連結:http://hi.baidu.com/siceblue/blog/item/74131022c2c622a24623e8fc.html