轉帖|其它|編輯:郝浩|2010-09-29 11:43:11.000|閱讀 598 次
概述:AuthenticationService對象僅提供了兩個公用方法:login()和logout(),分別用來實現用戶登錄和注銷,還暴露了幾個常用的屬性。下面讓我們逐一介紹。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
AuthenticationService對象僅提供了兩個公用方法:login()和logout(),分別用來實現用戶登錄和注銷,還暴露了幾個常用的屬性。下面讓我們逐一介紹。
(一) 方法
1、login()方法
這個方法負責將用戶名字和密碼傳遞到服務器端進行驗證,并返回是否通過驗證的信息;必要的話,還可以設置相應的客戶端Cookie等信息。這個方法的完整形式如下所示:
Sys.Services.AuthenticationService.login(userName, password, isPersistent, customInfo, redirectUrl,
inCompletedCallback, failedCallback, userContext);
下面詳細列出了上面各個參數的含義。
參數:作用
userName:將被認證的用戶名字。
password:將被認證的用戶密碼。
isPersistent:如果取值為true,則表示要永久保存跨瀏覽器會話的認證信息;默認值為null。
customInfo: 保留字段(暫不使用),必須賦值為null。
redirectUrl: 驗證成功之后要重定向到的URL;若取值null,則不會發生重定向。默認值為null。
loginCompletedCallback: 調用認證服務完成之后的回調函數。注意,不管用戶是否通過了服務器端認證,只要認證過程中沒有出現諸如超時、異常等問題,都會調用該回調函數。然后,在該回調函數內可以得到用戶是否通過了此次驗證的信息。默認為null。
failedCallback: 調用認證服務失敗之后的回調函數。導致失敗的原因可能是網絡連接超時、或是認證服務內部拋出異常等。若是由于用戶提供的用戶名和密碼不正確而不能通過驗證,將不會導致調用認證服務失敗,該回調函數將不會被調用。默認為null。
userContext: 隨本次異步用戶認證調用發送至服務器端的用戶上下文對象。
其中,loginCompletedCallback和failedCallback是兩個重要的回調函數地址參數。
①、loginCompletedCallback參數所指定的回調函數的完整形式:
function onLoginCompleted(validCredentials, userContext, methodName)
? validCredentials:一個布爾值,表示用戶是否成功通過了驗證;
? userContext:在調用login()方法時傳遞的用戶上下文對象;
? methodName:調用方法的方法名。
②、failedCallback參數所指定的回調函數的完整形式如下:
function onAuthenticationFailed(error, userContext, methodName)
? error:導致認證服務失敗的異常對象;
? userContext:在調用login()方法時傳遞的用戶上下文對象;
? methodName:調用方法的方法名。
2、logout()方法
logout()方法用來注銷當前已經登錄的用戶。這個方法的完整形式如下所示:
Sys.Services.AuthenticationService.logout( redirectUrl, logoutCompletedCallback, failedCallback, userContext );
其中各個參數的含義如下表2所示。
logout()方法各參數含義
參數:作用
redirectUrl: 注銷成功之后重定向到的URL,若該參數值為null,則將自動重定向至當前頁面。默認值為null。
logoutCompletedCallback: 注銷用戶完成之后的回調函數。
failedCallback :注銷用戶失敗之后的回調函數。導致失敗的原因可能是網絡連接超時、或是認證服務內部拋出異常等。
userContext: 隨本次異步用戶認證調用發送至服務器端的用戶上下文對象。
注意,在此所列出的四個參數均是可選的。對于logoutCompletedCallback和failedCallback參數,如果為AuthenticationService對象設置了默認值的話,也可以省略。
注銷成功之后的回調函數,即logoutCompletedCallback參數所指定的函數的完整的形式如下所示:
function onLogoutCompleted(result, userContext, methodName)
說明:
1. result:目前并沒有使用到該參數,始終為null。
2. userContext:在調用logout()方法時傳遞的用戶上下文對象。
3. methodName:調用方法的方法名。
注銷用戶失敗之后的回調函數,即failedCallback參數所指定的函數形式:
function onAuthenticationFailed(error, userContext, methodName)
說明:
1. error:導致認證服務失敗的異常對象。
2. userContext:在調用login()方法時傳遞的用戶上下文對象。
3. methodName:調用方法的方法名。
(二) 公共屬性
AuthenticationService對象還提供了如表3所示幾個經常用到的屬性。
AuthenticationService對象的常用屬性
屬性:作用
defaultLoginCompletedCallback: 獲取或設定默認的調用認證服務完成之后的回調函數。
defaultLogoutCompletedCallback: 獲取或設定默認的注銷用戶完成之后的回調函數。
defaultFailedCallback: 獲取或設定默認的登錄/注銷失敗之后的回調函數。
isLoggedIn: 獲取一個布爾值的屬性,表示當前用戶是否已經登錄。
timeout: 獲取或設定認證請求的超時時間,單位為毫秒。
(三) 簡單舉例
1、設置AuthenticationService對象的timeout屬性:
Sys.Services.AuthenticationService.set_timeout(3000);
2、若是預先設定了defaultLoginCompletedCallback、defaultLogoutCompletedCallback和 defaultFailedCallback屬性,那么在調用AuthenticationService對象的login()和logout()方法時,則可省去專門指定各回調函數的操作。例如,如下代碼就設定了AuthenticationService的這3個屬性,并定義了相應的默認回調函數:
Sys.Services.AuthenticationService.set_defaultLoginCompletedCallback(onLoginCompleted);
Sys.Services.AuthenticationService.set_defaultLogoutCompletedCallback(onLogoutCompleted);
Sys.Services.AuthenticationService.set_defaultFailedCallback(onAuthenticationFailed);
function onLoginCompleted(validCredentials, userContext, methodName) {
//…………
}
function onLogoutCompleted(result, userContext, methodName) {
//…………
}
function onAuthenticationFailed(error, userContext, methodName) {
//…………
}
隨后,我們只需使用如下代碼進行用戶登錄/注銷就可以了。其中userName表示用戶名,password表示密碼:
Sys.Services.AuthenticationService.login(userName, password, true);
//…………
Sys.Services.AuthenticationService.logout();
顯然,這種編程思路清晰更有助于實現模塊化,更值得推薦。
3、下面這個函數調用logout方法簡單地清除表單中的認證cookie信息。
function OnClickLogout()
{
Sys.Services.AuthenticationService.logout(null, null, null, null);
}
4、下面這個函數調用認證服務的login方法校驗用戶輸入的證書信息。如果認證成功,認證服務將產生一個表單認證相關cookie。
function OnClickLogin(){
//設置默認的回調函數
SetDefaultLoginCompletedCallBack();
SetDefaultLogoutCompletedCallBack();
SetDefaultFailedCallBack();
//調用認證服務認證用戶輸入的證書信息
Sys.Services.AuthenticationService.login(username.value,
password.value, false,null,null,null,null,"User Context");
}
總結
在本篇中,我們僅羅列了ASP.NET AJAX框架的客戶端認證服務中一些重要的公共成員及含義解釋。并且,我們已經認識到進行以ASP.NET AJAX框架客戶端中心型Web開發應當主動使用這一功能。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客轉載