其實Cookie跨網站共用是很簡單的,只要兩個網站在同一級目錄底下,則其中一個網站的COOKIE就能被另一個網站所引用.即它們的DOMAIN屬性是一樣的.比如我F盤上有兩個網站,一個是使用者系統,一個是新聞系統.我想實現就是在使用者系統登入之後不用再重新登入新聞系統就能直接進新聞系統.即常說的單點登入.
使用者系統中有個WEB服務,服務裡有個驗證使用者登入的方法.使用該方法.當使用者登入成功後,就建立一個COOKIE儲存使用者名稱和密碼.然後新聞系統中就可以直接存取這個COOKIE.因為它們屬於同一個域.
最主要的地方來了,雖然可以訪問這個COOKIE,但是要我們要清楚一點,COOKIE是在用戶端儲存的,即可以從用戶端修改COOKIE中的內容,所以伺服器端始終得對用戶端傳遞來的COOKIE持懷疑態度,不能相信這個COOKIE一定是伺服器端原始傳送過去的COOKIE.所以要對這個COOKIE進行驗證.
可能上面說的很不清楚,我再舉個例子.就像CSDN一樣,你在登入的時候可以選擇儲存兩周不用重複登入.你不用再輸入使用者名稱和密碼登入了,但是伺服器端並不是不驗證你的使用者名稱和密碼了,它還是要驗證使用者名稱和密碼的.而只不過改成讀取你COOKIE檔案裡的使用者名稱和密碼了.如果你手動修改儲存在你硬碟上的COOKIE中的使用者名稱和密碼的話,如果不正確的話,還是要失敗的.
下面來講下怎麼對COOKIE進行驗證.如果是在使用者系統中對COOKIE中的使用者名稱和密碼進行驗證那是很簡單的.因為使用者系統的資料庫中存在一個使用者表,可以直接讀取COOKIE中的使用者名稱和密碼然後去資料庫中進行匹配.
而現在的問題是要在新聞系統中驗證COOKIE中的使用者名稱和密碼,而新聞系統中根本沒有使用者表.所有使用者都是通過使用者系統單點登入的.
這時候關鍵來了,還記得前面說的使用者系統中的那個WEB服務嗎?沒錯,就是它了,我們在新聞系統的網站目錄上點擊右鍵,選擇添加WEB引用,然後選擇這個WEB服務,系統就會自動給這個WEB服務組建代理程式類.然後我們就可以直接使用使用者系統的這個WEB服務裡的驗證使用者登入的方法了.
為了以後方便查詢,特地寫到BOLG上來,只是我的一些想法,表達的不是很清楚,希望多多見諒.