【Dflying Chen】在ASP.NET Atlas中结合Membership进行身份验证

ASP.NET Atlas可以使用ASP.NET中的Membership来进行用户身份验证,并在验证成功后自动设定相应的Cookie。Atlas中的身份验证是通过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文件中启用相应的验证服务:

None.gif < configSections >
None.gif    
< sectionGroup  name ="microsoft.web"  type ="Microsoft.Web.Configuration.MicrosoftWebSectionGroup" >
None.gif        
< section  name ="converters"  type ="Microsoft.Web.Configuration.ConvertersSection"  requirePermission ="false" />
None.gif        
< section  name ="webServices"  type ="Microsoft.Web.Configuration.WebServicesSection"  requirePermission ="false" />
None.gif        
< section  name ="authenticationService"  type ="Microsoft.Web.Configuration.AuthenticationServiceSection"  requirePermission ="false" />
None.gif        
< section  name ="profileService"  type ="Microsoft.Web.Configuration.ProfileServiceSection"  requirePermission ="false" />
None.gif    
sectionGroup >
None.gif
configSections >

还有:

None.gif < microsoft .web >
None.gif    
< webServices  enableBrowserAccess ="true" />
None.gif    
<!--
None.gif    Uncomment this line to enable the authentication service.
--&gt
None.gif  
< authenticationService  enabled ="true"   />
None.gif
microsoft.web >

然后我们在Membership数据库中添加几个测试的用户,您可以通过ASP.NET Web Site Administration Tool来设置并添加用户。

现在我们创建一个简单的登录页面,与所有的登录页面类似,两个input(用户名/密码)一个按钮(登录)。我们又加入了一个label来显示用户登录信息。代码如下:

None.gif Status:  < span  style ="color: Red;"  id ="status" > logged out span >< br  />
None.gifUser Name:
< input  type ="text"  id ="username"   />< br  />
None.gifPassword:
< input  type ="password"  id ="password"   />< br  />
None.gif
< input  id ="loginlogout"  type ="button"  onclick ="OnSubmitLogin()"  value ="Click me to login!"   />< br  />

 

当然,最重要的ScriptManager 是不能缺少的:
None.gif < atlas:ScriptManager  ID ="scriptManager"  runat ="server"   />

下面,我们来书写登录按钮按下时候的事件处理函数,也就是登录的处理。首先,利用Atlas的$()方法在DOM中找到上述几个HTML控件:

None.gif var  username  =  $('username');
None.gif
var  password  =  $('password');
None.gif
var  status  =  $('status');
None.gif
var  buttonLoginLogout  =  $('loginlogout');

 

下面是用户登录时的处理,注意到我们只是简单的调用了Sys.Services.AuthenticationService.login()方法,并在返回以后相应改变状态label的文字:

ExpandedBlockStart.gif ContractedBlock.gif function  OnSubmitLogin()  dot.gif {   
InBlock.gif    Sys.Services.AuthenticationService.login(username.value, password.value, 
false, OnLoginComplete); 
InBlock.gif    
return false;
ExpandedBlockEnd.gif}

ExpandedBlockStart.gifContractedBlock.gif
function  OnLoginComplete(result)  dot.gif {
InBlock.gif    password.value 
= '';
InBlock.gif
InBlock.gif    
//On success there will be a forms authentication cookie in the browser.
ExpandedSubBlockStart.gifContractedSubBlock.gif
    if (result) dot.gif{
InBlock.gif        username.value 
= '';
InBlock.gif        status.innerHTML 
= "logged in";
InBlock.gif       
InBlock.gif        buttonLoginLogout.innerText 
= "Click me to logout!";         
InBlock.gif        buttonLoginLogout.onclick 
= OnSubmitLogout;
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
else dot.gif{
InBlock.gif        status.innerHTML 
= "User name/Password not match!";
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

 

下面是用户注销时的处理,通过调用Sys.Services.AuthenticationService.logout()方法来实现:

ExpandedBlockStart.gif ContractedBlock.gif function  OnSubmitLogout()  dot.gif {  
InBlock.gif    
//This call will cause the server to clear the forms authentication cookie. 
InBlock.gif
    Sys.Services.AuthenticationService.logout(OnLogoutComplete); 
InBlock.gif    
return false;
ExpandedBlockEnd.gif}
 
ExpandedBlockStart.gifContractedBlock.gif
function  OnLogoutComplete(result)  dot.gif {
InBlock.gif    
InBlock.gif    buttonLoginLogout.innerText 
= "Click me to login!"
InBlock.gif    status.innerHTML 
= "logged out"
InBlock.gif    buttonLoginLogout.onclick 
= OnSubmitLogin;
ExpandedBlockEnd.gif}
  

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-343351/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639172/viewspace-343351/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值