熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

單點登錄在ASP.NET上的簡單實現[5]

2013-11-13 11:00:31  來源: .NET編程 
    Shop的Synchronouscs

  好了我們在Service中完成了登錄並把用戶狀態傳遞回Shop站點我們接著看用戶狀態是怎麼同步的首先如果Session裡的Security是空字符串則表示Shop站點沒有向Service發送過請求而Service向Shop發回了請求這顯然是錯誤的這次訪問是由客戶端偽造進行的訪問於是訪問被拒絕了同樣Security和InSecurity不相同則表示請求和應答是不匹配的可能應答被纂改過了所以應答同樣被拒絕了當檢驗Security通過後我們保證Serive完成了應答並且返回了確切的參數下面就是讀出參數同步Shop站點和Service站點的用戶即時狀態

string InUserID = thisRequestQueryString[UserID];
string InPass = thisRequestQueryString[Pass];
string InSecurity = thisRequestQueryString[Security];

string Security = thisSession[Security]ToString();
if (Security != )
{
 byte[] Value;
 UnicodeEncoding Code = new UnicodeEncoding();
 byte[] Message = CodeGetBytes(Security);
 SHAManaged Arithmetic = new SHAManaged();
 Value = ArithmeticComputeHash(Message);
 Security = ;
 foreach(byte o in Value)
 {
  Security += (int) o + O;
 }

 if (Security == InSecurity)
 {
  if (InPass == True)
  {
   thisSession[UserID] = intParse(InUserID);
   thisSession[Pass] = true;
   thisResponseRedirect(thisSession[Url]ToString());
  }
 }
 else
 {
  thisResponseWrite();
  thisResponseWrite();
  thisResponseWrite();
  thisResponseWrite();
  thisResponseWrite();
  thisResponseWrite();
  thisResponseWrite();
  thisResponseWrite(數據錯誤);
  thisResponseWrite();
  thisResponseWrite();
  thisResponseWrite();
 }
}
else
{
 thisResponseWrite();
 thisResponseWrite();
 thisResponseWrite();
 thisResponseWrite();
 thisResponseWrite();
 thisResponseWrite();
 thisResponseWrite();
 thisResponseWrite(訪問錯誤);
 thisResponseWrite();
 thisResponseWrite();
 thisResponseWrite();
}


  Shop的Pagecs

  我們知道頁面在一段時間不刷新後Session會超時失效在我們一直訪問Shop的時候怎麼才能保證Service的Session不會失效呢?很簡單我們返回來看Shop的Pagecs通過在所有Shop的頁面內都用<iframe>嵌套Service的某個頁面就能保證Service能和Shop的頁面同時刷新需要注意的一點是Service的Session必須保證不小於所有Shop和Office的Session超時時間這個在Webconfig裡可以進行配置

thisResponseWrite(<iframe width=\\ height=\\ src=\ + projectservice + /Customeraspx\></iframe>);


  總結

  一次完整的登錄完成了我們接著假設一下現在要跳到Office的Any頁面系統會進行怎樣的操作呢?Any(用戶沒有登錄)>Validate(用戶已經登錄)>Synchronous(同步)>Any也就是說這次用戶沒有進行登錄的過程我們通過一次登錄使得Service的用戶狀態為登錄並且不管有多少個網站應用只要這些網站都保證符合Shop的特性這些網站就都能保持Service的用戶狀態同時能通過Service獲得用戶的狀態也就是說我們實現了SSO

[]  []  []  []  []  


From:http://tw.wingwit.com/Article/program/net/201311/14964.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.