【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證

iDotNetSpace發表於2008-06-11

ASP.NET Atlas可以使用ASP.NET中的Membership來進行使用者身份驗證,並在驗證成功後自動設定相應的CookieAtlas中的身份驗證是通過Sys.Services._AuthenticationService類的一個例項:Sys.Services.AuthenticationService來進行的,在Atlas應用程式中,您可以通過這個全域性的Sys.Services.AuthenticationService物件來進新身份驗證。

Sys.Services.AuthenticationService物件有如下幾個方法:

  1. validateUser():該方法接受使用者名稱,密碼兩個引數,並將返回一個布林值代表使用者驗證(注意,僅僅為驗證,不是登入,該方法將不會設定Cookie。)是否成功。該方法將使用ASP.NET中設定的預設的membership provider來進行使用者的驗證。
  2. login():這個方法與validateUser()方法類似,但在其基礎上該方法會設定代表登入成功的Cookie,當然需要在提供的使用者名稱/密碼正確的情況下。通過呼叫這個方法,您可以實現AJAX方式的使用者登入。
  3. logout():登出當前使用者。

下面我們通過一個例子來演示一下使用Sys.Services.AuthenticationService物件進行使用者身份驗證。

首先,在您的web.config檔案中啟用相應的驗證服務:

【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證<configSections>
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
<sectionGroup name="microsoft.web" type="Microsoft.Web.Configuration.MicrosoftWebSectionGroup">
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證        
<section name="converters" type="Microsoft.Web.Configuration.ConvertersSection" requirePermission="false"/>
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證        
<section name="webServices" type="Microsoft.Web.Configuration.WebServicesSection" requirePermission="false"/>
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證        
<section name="authenticationService" type="Microsoft.Web.Configuration.AuthenticationServiceSection" requirePermission="false"/>
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證        
<section name="profileService" type="Microsoft.Web.Configuration.ProfileServiceSection" requirePermission="false"/>
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
sectionGroup>
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
configSections>

還有:

【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證<microsoft.web>
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
<webServices enableBrowserAccess="true"/>
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
<!--
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    Uncomment this line to enable the authentication service.
--&gt
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證  
<authenticationService enabled="true" />
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
microsoft.web>

然後我們在Membership資料庫中新增幾個測試的使用者,您可以通過ASP.NET Web Site Administration Tool來設定並新增使用者。

現在我們建立一個簡單的登入頁面,與所有的登入頁面類似,兩個input(使用者名稱/密碼)一個按鈕(登入)。我們又加入了一個label來顯示使用者登入資訊。程式碼如下:

【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證Status: <span style="color: Red;" id="status">logged outspan><br />
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證User Name:
<input type="text" id="username" /><br />
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證Password:
<input type="password" id="password" /><br />
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
<input id="loginlogout" type="button" onclick="OnSubmitLogin()" value="Click me to login!" /><br />

 

當然,最重要的ScriptManager是不能缺少的:
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證<atlas:ScriptManager ID="scriptManager" runat="server" />

下面,我們來書寫登入按鈕按下時候的事件處理函式,也就是登入的處理。首先,利用Atlas$()方法在DOM中找到上述幾個HTML控制元件:

【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證var username = $('username');
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
var password = $('password');
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
var status = $('status');
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
var buttonLoginLogout = $('loginlogout');

 

下面是使用者登入時的處理,注意到我們只是簡單的呼叫了Sys.Services.AuthenticationService.login()方法,並在返回以後相應改變狀態label的文字:

【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證function OnSubmitLogin() {   
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    Sys.Services.AuthenticationService.login(username.value, password.value, 
false, OnLoginComplete); 
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
return false;
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證}

【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
function OnLoginComplete(result) {
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    password.value 
= '';
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
//On success there will be a forms authentication cookie in the browser.
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
    if (result) {
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證        username.value 
= '';
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證        status.innerHTML 
= "logged in";
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證       
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證        buttonLoginLogout.innerText 
= "Click me to logout!";         
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證        buttonLoginLogout.onclick 
= OnSubmitLogout;
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    }

【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
else {
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證        status.innerHTML 
= "User name/Password not match!";
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    }

【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證}

 

下面是使用者登出時的處理,通過呼叫Sys.Services.AuthenticationService.logout()方法來實現:

【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證function OnSubmitLogout() {  
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
//This call will cause the server to clear the forms authentication cookie. 
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
    Sys.Services.AuthenticationService.logout(OnLogoutComplete); 
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
return false;
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證}
 
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證
function OnLogoutComplete(result) {
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    buttonLoginLogout.innerText 
= "Click me to login!"
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    status.innerHTML 
= "logged out"
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證    buttonLoginLogout.onclick 
= OnSubmitLogin;
【Dflying Chen】在ASP.NET Atlas中結合Membership進行身份驗證}
  

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-343351/,如需轉載,請註明出處,否則將追究法律責任。

相關文章