介面封裝及呼叫
為了更好地讓應用系統進行呼叫,有的時候需要對介面進行封裝,把複雜的東西包起來,讓應用系統介面開發者感覺越簡單越好。這樣你的系統才更容易被推廣或應用。比如,現在的很多線上支付介面都提供了軟體開發包。我們也可以通過封裝來實現介面開發包,讓開發人員簡單開發,輕鬆呼叫。
1.介面封裝
我們新增一個SSOLib類庫專案,提供對應用系統介面程式碼的封裝,從而使其他應用系統通過呼叫該類庫,即可實現接入認證服務中心。SSOLib類庫專案如圖18-17所示,詳細程式碼請參考本書配套光碟。
圖18-17 SSOClass類庫專案
l Assistant類:輔助工具類。
l DESEncrypt類:加密/解密處理類。
l
l ValidatePageBase類:當前應用系統驗證頁面的基類。應用系統中的任一頁面通過繼承該類,都可實現對使用者狀態的驗證功能。
2.應用系統呼叫介面開發步驟
下面看一下如何通過呼叫上面封裝過的類庫,來實現接入認證服務中心實現單點登入功能。
(1)在Web.config裡設定環境引數:
<appSettings>
<!--認證伺服器驗證請求地址-->
<add key="ServiceValidate" value="http://localhost:2999/Validate.aspx"/>
<!--認證伺服器域名地址-->
<add key="ServiceUrl" value="http://localhost:2999"/>
<!--分配給應用系統的API程式碼-->
<add key="apikey" value="642386db7bf249018117e643522d6a05"/>
<!--是否加密傳遞 -->
<add key="IsEncrypt" value="false"/>
<!--加密金鑰-->
<add key="EncryptKey" value="litianping"/>
</appSettings>
(2)在Global.asax.cs中Session_Start新增:
protected void Session_Start(object sender, EventArgs e)
{
this.Session.Add("UserID", 0);
this.Session.Add("Pass", false);
this.Session.Add("Security", "");
this.Session.Add("Url", "");
}
(3)引用元件SSOLib.DLL,如圖18-18所示。
圖18-18 引用元件SSOLib.DLL
(4)使用者身份認證,驗證當前狀態。
將要進行驗證的頁面(AnyPage)基類由System.Web.UI.Page改為 SSOLib.ValidatePage。
(5)接收認證伺服器的返回資訊進行狀態同步。
在專案中增加一個空白頁面Synchronous.aspx,將頁面基類繼承自SSOLib.SynPageBase。
(6)更新認證伺服器,保持Service認證伺服器Session狀態。
新增一個使用者控制元件SynServerIFrame.ascx實現如下程式碼,並拖到所有的頁面上。
<iframe width=0 height=0 src='<%= ServiceUrl%>/SessionState.aspx'></iframe>
SynServerIFrame.ascx.cs程式碼如下:
public partial class SynServerIFrame : System.Web.UI.UserControl
{
public string ServiceUrl = ConfigurationSettings.AppSettings["ServiceUrl"];
}
(7)登出當前應用系統的登入。
Session.Clear();
Session.Abandon();
(8)登出所有應用系統的登入。
直接轉向伺服器登出頁面即可:
Response.Redirect(ConfigurationSettings.AppSettings["ServiceUrl"] +
"/logout.aspx");
通過上面方式的呼叫,應用系統的開發工作量大大減少,幾分鐘就可以實現了。當然,這裡不僅僅是教給大家幾行程式碼,更重要的是一種思想,一種為客戶著想的思想。
本文節選自《專案中的.NET》一書
李天平編著
電子工業出版社出版