1.HTML部分:

    <form id="form1" runat="server">
    <script src="../Script/jquery-v1.10.2.js" type="text/javascript"></script>
    <script src="login.js" type="text/javascript"></script>
    <div class="" style="height: 160px">
        <div>
            <label for="userName">
                帐号:</label>
            <input type="text" name="userName" />
        </div>
        <div>
            <label for="password">
                密码:</label>
            <input type="password" name="password" />
        </div>
        <input type="submit" id="btnSumit" value="登录" />
        <p class="msg"> </p>
    </div>
    </form>
2.引入登录插件:login.js
/*!
* 插件名称:登录插件封装,使用方法: 
      $('#form1').login({
            url: "LoginHandler.ashx",//处理登录验证逻辑的Url
            userName: $("input[name='userName']"),//用户名输入框
            password: $("input[name='password']"),//密码输入框
            msg: $(".msg"),                                        //提示信息
            button: $("#btnSumit")                            //提交按钮
        });  
*/
(function ($) {
    $.fn.login = function (option) {
        var defaults = {
            url: '/account/login/',
            msg: $(this).find('.msg'),
            userName: $(this).find("input[name='userName']"),
            password: $(this).find("input[name='password']"),
            button: $(this).find("#button")
        };
        var options = $.extend(defaults, option);
        var errMsg = {
            'inputUserName': '请输入用户名',
            'inputPassword': '请填写登录密码',
            'passwordLength': '密码应在6-32位字符内',
            'noreg': '此账号未注册',
            'inviladUserName': '帐号不存在',
            'accountNotMatch': '账号密码不匹配',
            'userLocked': '帐号锁定中,暂时无法登录',
            'serverdown': '服务器繁忙,请稍后再试'
        };
        //提交数据
        function submit() {
            var userNameInput = $.trim(options.userName.val());
            var passwordInput = $.trim(options.password.val());
            if (userNameInput == '') {
                showMsg('登录名不能为空');
                options.userName.focus();
                return;
            }
            if (passwordInput == '') {
                showMsg('密码不能为空');
                options.password.focus();
                return;
            }
            $.ajax({
                type: "POST",
                url: options.url,
                data: "userName=" + userNameInput + "&password=" + passwordInput,
                success: function (msg) {
                    var result = eval("[" + msg + "]")[0];
                    if (result.status == "ok") {
                        //登录成功处理
                        showMsg("登录成功....");
                    } else {
                        showMsg(errMsg[result.status]);
                    }
                }
            });
        }
        //显示错误信息
        function showMsg(msg) {
            options.msg.html(msg);
        }
        //绑定按钮事件
        options.button.bind('click', function () {
            submit();
            return false;
        });
    };
})(jQuery);
3.页面调用插件:
    <script type="text/javascript">
        $('#form1').login({
            url: "AjaxLogin.aspx",
            userName: $("input[name='userName']"),
            password: $("input[name='password']"),
            msg: $(".msg"),
            button: $("#btnSumit")
        });
    </script>
4.后台处理逻辑(请根据实际需求做相应调整)
using System;
using System.Web;
using System.Web.UI;
namespace Whir.SiteFactory.Website.Admin.Account
{
    public partial class AjaxLogin : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string status = ProcessLogin();
            Response.Clear();
            Response.Write(status);
            Response.End();
        }
        private string ProcessLogin()
        {
            try
            {
                string userName = HttpContext.Current.Request.Form["userName"];
                string password = HttpContext.Current.Request.Form["password"];
                if (string.IsNullOrEmpty(userName))
                {
                    return "{status:'inputUserName'}"; //请输入用户名
                }
                if (string.IsNullOrEmpty(password))
                {
                    return "{status:'inputPassword'}"; //请填写登录密码
                }
                if (password.Length < 6 || password.Length > 32)
                {
                    return "{status:'passwordLength'}"; //密码应在6-32位字符内
                }
                //var user = UserService.GetUserByName(userName);
                //if (user == null)
                //{
                //    return "{status:'inviladUserName'}"; //帐号不存在
                //}
                //if (user.IsLocked)
                //{
                //    return "{status:'userLocked'}"; //帐号锁定中,暂时无法登录
                //}
                //if (user.Password.ToLower() != password.ToMd5().ToLower())
                //{ 
                //    return "{accountNotMatch:'ok'}"; //账号密码不匹配
                //}
                //其他操作:
                //写入客户端cookie
                //登录日志
                return "{status:'ok'}"; //登录成功
            }
            catch (Exception ex)
            {
                return "{status:'serverdown'}"; //服务器繁忙,请稍后再试
            }
        }
    }
}
完整Demo下载:


版权声明:本文为博主原创文章,未经博主允许不得转载。

网站通用登录模块代码 分类: ASP.NET 2014-12-06 10:49 615人阅读 评论(0) 收藏的更多相关文章

  1. JavaScript、Ajax与jQuery的关系 分类: C1_HTML/JS/JQUERY 2014-07-31 10:15 3388人阅读 评论(0) 收藏

    简单总结: 1.JS是一门前端语言. 2.Ajax是一门技术,它提供了异步更新的机制,使用客户端与服务器间交换数据而非整个页面文档,实现页面的局部更新. 3.jQuery是一个框架,它对JS进行了封装 ...

  2. Nginx介绍 分类: Nginx 服务器搭建 2015-07-13 10:50 19人阅读 评论(0) 收藏

    海量请求,高性能服务器. 对比Apache, Apache:稳定,开源,跨平台,重量级,不支持高度并发的web服务器. 由此,出现了Lighttpd与Nignx:轻量级,高性能. 发音:engine ...

  3. 改变HTML中超链接的显示样式 分类: C1_HTML/JS/JQUERY 2014-08-27 10:11 595人阅读 评论(0) 收藏

    更详细的内容请参考:http://www.w3school.com.cn/tags/tag_a.asp HTML中的代码如下: <a class="news_title" t ...

  4. 全面解析sizeof(下) 分类: C/C++ StudyNotes 2015-06-15 10:45 263人阅读 评论(0) 收藏

    以下代码使用平台是Windows7 64bits+VS2012. sizeof作用于基本数据类型,在特定的平台和特定的编译中,结果是确定的,如果使用sizeof计算构造类型:结构体.联合体和类的大小时 ...

  5. 全面解析sizeof(上) 分类: C/C++ StudyNotes 2015-06-15 10:18 188人阅读 评论(0) 收藏

    以下代码使用平台是Windows7 64bits+VS2012. sizeof是C/C++中的一个操作符(operator),其作用就是返回一个对象或者类型所占的内存字节数,使用频繁,有必须对齐有个全 ...

  6. jQuery中的on()和click()的区别 分类: 前端 HTML jQuery 2014-11-06 10:26 96人阅读 评论(0) 收藏

    HTML页面代码 <div> <h1>Click</h1> <button class="add">Click me to add ...

  7. javascript中定义事件的三种方式 分类: C1_HTML/JS/JQUERY 2014-08-07 10:27 634人阅读 评论(0) 收藏

    在javascript中,可以为某个元素指定事件,指定的方式有以下三种: 1.在html中,使用onclick属性 2.在javascript中,使用onclick属性 3.在javascipt中,使 ...

  8. MS SQL 合并结果集并求和 分类: SQL Server 数据库 2015-02-13 10:59 92人阅读 评论(0) 收藏

    业务情景:有这样一张表:其中Id列为表主键,Name为用户名,State为记录的状态值,Note为状态的说明,方便阅读. 需求描述:需要查询出这样的结果:某个人某种状态的记录数,如:张三,待审核记录数 ...

  9. 菜鸟学习-C语言函数参数传递详解-结构体与数组 分类: C/C++ Nginx 2015-07-14 10:24 89人阅读 评论(0) 收藏

    C语言中结构体作为函数参数,有两种方式:传值和传址. 1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下 ...

随机推荐

  1. (C语言)精髓——指针

    (1)作用:正确而灵活的运用指针,能够有效的表示复杂的数据结构,能动态分配内存,方便地使用字符串,有效而方便地使用数组,可以直接处理内存单元地址. (2)概念:①变量的指针:变量(3)的地址.(200 ...

  2. 【云计算】marathon集群如何升级?

    Upgrading to a Newer Version We generally recommend creating a backup of the ZooKeeper state before ...

  3. DIV UL LI

    <style type="text/css"> .productDetailTabNav{ width:960px;} .productDetailTabNav ul{ ...

  4. 【leetcode】Populating Next Right Pointers in Each Node II

    Populating Next Right Pointers in Each Node II Follow up for problem "Populating Next Right Poi ...

  5. jQuery DataTables && Django serializer

    jQuery DataTables https://www.datatables.net 本文参考的官方示例 http://datatables.net/release-datatables/exam ...

  6. linux琐碎知识点

    1.awk的使用方式,pattern支持正则表达式 awk 'pattern{action}' {filenames} 其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找 ...

  7. linux内置的审计跟踪工具------last和lastb

    last是linux的一个内置工具,可以用来查看最后登录服务器的用户.它对于追踪非常有用. last命令显示的是来自/var/log/wtmp文件创建起,所有登录的用户.这个文件是一个二进制文件,不能 ...

  8. apache官网怎样下载apache HTTP Server服务器

    我相信有些朋友刚用apache服务器时,都希望从官网上下载,而面对着官网上众多的项目和镜像以及目录,也许有点茫然.下面是具体步骤 第一步:打开apache官网 第二步:点击右上角Download,出现 ...

  9. zsh 通信脚本

    server #!/bin/zsh #zsh TCP server script zmodload zsh/net/tcp #listening port ztcp -l #This is a fil ...

  10. shell 脚本编程概述

    环境变量 ? 退出状态码 (成功) (未知错误) (误用 shell 命令) (命令不可执行) (没找到命令) (无效退出状态) +x( linux 信号 X 的严重错误) ( ctrl c 终止程序 ...