使用Session、Cookie與安全支持
今天來介紹IsLine.HttpContent.HttpContentProvider命名空間中關於Session與Cookie的支持。
這是IsLine FrameWork中一個常用的組件,使用這個組件可以為整站程序提供統一的Cookie配置屬性 ,例如Cookie加密方式、是否HttpOnly、是否打開https安全選項、以及默認作用域。CookieProvider是 該命名空間下的類,在該類初始化時,會自動加載web.config文件中的 Cookie節點配置,讀取成功後會 加載於整個web站點,這些屬性不需要出現在程序中。
web.comfig節點配置:
在</configSections>與<appSettings>之間加入以下配置:
代碼
<IsLine.HttpContent.Configuration>
<Cookie>
<Cryptography>False</Cryptography>
<IsHttpOnly>True</IsHttpOnly>
<IsSecure>False</IsSecure>
<Domain>Default</Domain>
</Cookie>
</IsLine.HttpContent.Configuration>
在<configSections>與</configSections>之間加入以下節點:
<sectionGroup name="IsLine.HttpContent.Configuration">
<section name="Cookie" type="IsLine.Data.Configuration.SuitConfig"/>
</sectionGroup>
然後就可以在程序中使用這個Provider了。在<IsLine.HttpContent.Configuration>節點中, Cryptography表示是否啟用Cookie的加密,它有True和Fasle兩個值,如果值為True,在對Cookie進行新 建或更新時,Provider將會自動啟用IsLine.Security.Cryptography命名空間下的Encrypting方法進行加 密,在讀取 Cookie時,Provider將會自動啟用IsLine.Security.Cryptography命名空間下的Decrypting 方法進行解密,關於IsLine.Security.Cryptography信息後面會有介紹。在加密與解密時,會用到種子字 符串,種子在web.config中添加節點進行配置:
<add key=" IsLine.Security.Configuration.TokenKey " value="IsLine"/>
配置好後,Cryptography節點的值就可以使用True了,這時查看硬盤上的Cookie信息,就是已經加密 過的了。
IsHttpOnly對應Cookie的HttpOnly屬性,該屬性指示是否只能在服務器端獲取到用戶Cookie,如果該 值為True,那麼 Javascript、Flash等客戶端方法,將無法獲取到Cookie。這需要IE6的SP1以上版本的浏 覽器支持。
IsSecure對應Cookie的 Secure屬性,如果該屬性為True,那麼cookie就只能通過https或其他安全協 議才能傳輸,在http中是無效的。置了secure屬性不代表其他人不能看到你機器本地保存的cookie,只保 證cookie與WEB服務器之間的數據傳輸過程加密,而保存在本地的cookie文件並不加密。如果想加密本地 存儲的Cookie,請設置Cryptography節點為True。
Domain 對應Cookie的Domain屬性,該屬性指明了Cookie的作用域。比如有一個站點www.abc.com,後來 又新增了類似isline.abc.com的站點,為了實現web站點的cookie共享,就需要對cookie的domain重新設 置了,這時Domain值可以設置為abc.com,這樣基於abc.com的網站都可以共享Cookie了。
這就是CookieProvider的方便之處,只需要簡單的配置,就可以對整站Cookie進行統一的管理!