登录界面是信息系统提供的必备的功能,是提供给用户提供维护信息的接口。接下来,我来带领大家打造一个漂亮、安全的登录界面,使用的技术是ASP.NET+jQuery

先来看看预览效果 

Ajax登录重点在Ajax,输入用户名和密码后,使用Ajax方式将信息提交到服务器端,服务器端判断时候存在该用户,存在则登录成功并转向管理界面(有时需要写cookie或是利用Session,此处不作讨论),不存在则提示登录失败。

基本流程图如下
 

上面是主要思路,为了打造安全的登录,在使用ajax将密码传到服务器端前,我们可以使用MD5对密码进行加密,当然数据库中存储的也是加密后的字符串。jQuery有一款这样的MD5加密插件,使用十分方便。

流程知道了,就可以方便实现了。以下是一些主要的代码

Default.aspx:主要是提供超链接,点击会调用thickbox,打开弹出页面。

 
  
  1. <div style="margin-left:50px; margin-top:50px; ">  
  2. 欢迎使用后台,<a href="Login.htm?TB_iframe&height=180&width=350&modal=true" class="thickbox"   id="myToolTip"  title="点击登录,进入后台管理" >点击登录!</a>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
  3. 继续浏览前台,<a href="../Default.aspx">返回前台</a>  

login.htm:真正的登录界面,负责登录逻辑

 

 
  
  1. <script type="text/javascript" src="js/jquery-1.3.2.js"></script> 
  2. <script type="text/javascript"> 
  3.     $().ready(function () {  
  4.         $('#Login').click(function () {  
  5.             if ($('#username').val() == "" || $('#password').val() == "") {  
  6.                 alert("用户名或密码不能为空!");  
  7.             }  
  8.             else {  
  9.                 $.ajax({  
  10.                     type: "POST",  
  11.                     url: "Ajax/LoginHandler.ashx",  
  12.                     data: "username=" + escape($('#username').val()) + "&password=" + escape($('#password').val()),  
  13.                     beforeSend: function () {  
  14.                         $("#loading").css("display", "block"); //点击登录后显示loading,隐藏输入框  
  15.                         $("#login").css("display", "none");  
  16.                     },  
  17.                     success: function (msg) {  
  18.                         $("#loading").hide(); //隐藏loading  
  19.                         if (msg == "success") {  
  20.                             //parent.tb_remove();  
  21.                             parent.document.location.href = "admin.htm"; //如果登录成功则跳到管理界面  
  22.                             parent.tb_remove();  
  23.                         }  
  24.                         if (msg == "fail") {  
  25.                             alert("登录失败!");  
  26.                         }  
  27.                     },  
  28.                     complete: function (data) {  
  29.                         $("#loading").css("display", "none"); //点击登录后显示loading,隐藏输入框  
  30.                         $("#login").css("display", "block");  
  31.                     },  
  32.                     error: function (XMLHttpRequest, textStatus, thrownError) {  
  33.                     }  
  34.                 });  
  35.             }  
  36.         });  
  37.     });  
  38. </script> 
  39.  
  40. <div id="loading" style="text-align: center; display: none; padding-top: 10%"> 
  41.     <img src="images/loadingajax.gif" alt="loading" /> 
  42. </div> 
  43. <div id="login" style="text-align: center"> 
  44. <div style="position:absolute; right:0; top:0"><img src="images/closebox.png" onclick="parent.tb_remove()" alt="点击关闭" style="cursor:pointer"  /></div> 
  45.  
  46.     <table border="0" cellpadding="3" cellspacing="3" style="margin: 0 auto;"> 
  47.         <tr> 
  48.             <td style="text-align: right; padding: 10px"> 
  49.                 <label> 
  50.                     用户名:</label> 
  51.             </td> 
  52.             <td> 
  53.                 <input id="username" type="text" size="20" /> 
  54.             </td> 
  55.         </tr> 
  56.         <tr> 
  57.             <td style="text-align: right; padding: 10px"> 
  58.                 <label> 
  59.                     密码:</label> 
  60.             </td> 
  61.             <td> 
  62.                 <input id="password" type="password" size="20" /> 
  63.             </td> 
  64.         </tr> 
  65.         <tr align="right"> 
  66.             <td colspan="2"> 
  67.                 <input type="submit" id="Login" value="&nbsp;&nbsp;登&nbsp;录&nbsp;&nbsp;" style="margin-right: 50px">&nbsp;  
  68.                 <input type="submit" id="LoginCancel" value="&nbsp;&nbsp;取&nbsp;消&nbsp;&nbsp;" onclick="parent.tb_remove()"> 
  69.             </td> 
  70.         </tr> 
  71.     </table> 
  72. </div> 

LoginHandler.ashx:ajax处理类,简单的逻辑

 
  
  1. //此处连接数据库查看是否有此用户,此处为了方便起见,直接判断  
  2.             if (username == "admin" && password == "1")  
  3.             {  
  4.                 context.Response.Write("success");  
  5.                 //存储session  
  6.             }  
  7.             else  
  8.             {  
  9.                 context.Response.Write("fail");  
  10.             } 

ok,一个简单的登录功能就完成了,当然此处在登录的时候没有进行密码加密。

下面我们来看看jQuery的加密插件MD5插件, 使用十分方便,加入md5.js的引用就可以使用$.md5()函数对字符串进行加密,
 

如下对上述代码做稍微改变,即可看到加密后的字符串, 

login.htm中:  

 
  
  1. data: "username=" + escape($('#username').val()) + "&password=" + $.md5(escape($('#password').val())),  
  2.  
  3. success: function (msg) {  
  4.                         $("#loading").hide(); //隐藏loading  
  5.                         alert(msg);  
  6.                         if (msg == "success") {  
  7.                             //parent.tb_remove();  
  8.                             parent.document.location.href = "admin.htm"; //如果登录成功则跳到管理界面  
  9.                             parent.tb_remove();  
  10.                         }  
  11.                         if (msg == "fail") {  
  12.                             alert("登录失败!");  
  13.                         }  
  14.                     } 

LoginHandler.ashx中加密码返回即可:

context.Response.Write(password); 

ok,再次运行程序会弹出 输入密码的MD5加密之后的字符串。

以上是比较简陋的见解,附下载地址AjaxLogin