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. ndk学习11: linux内存管理

        1. 进程地址空间   2.内存管理     栈上分配空间 alloca()       栈上分配大小 strdupa()    拷贝一个字符串到栈上(显然这个函数不安全)           ...

  2. NOSQL概要

    NOSQL概要 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库.NoSQL数据库的四大分类 键值(Key-Value)存储数 ...

  3. (转) Docker swarm 之介绍与使用

    今天,在站内看到一篇关于Docker Swarm 的文章,非常好,在这里转过来,方便日后查阅 :) 原贴链接: http://www.cnblogs.com/rio2607/p/4445968.htm ...

  4. 【leetcode】Word Break II

    Word Break II Given a string s and a dictionary of words dict, add spaces in s to construct a senten ...

  5. TransactionScope类

    命名空间:System.Transactons MSDN解释:使代码块成为事务性代码,此类不能被继承. 百度空间:在项目中引用using System.Transaction命名空间.在using 中 ...

  6. selenium 右键下载图片,结合sikuli

    上一次写右键下载是结合robot,这次是使用selenium+sikuli 上一次日志:http://www.cnblogs.com/tobecrazy/p/3969390.html 有关sikuli ...

  7. ePass1000 Full ActiveX Control Reference Manual Version 2.0

    ePass1000 Full ActiveX Control Reference Manual Version 2.0 Error Code Value Return Status Descripti ...

  8. Java for LeetCode 211 Add and Search Word - Data structure design

    Design a data structure that supports the following two operations: void addWord(word)bool search(wo ...

  9. 将file转变成contenthash

    一.将MultipartFile转file CommonsMultipartFile cf= (CommonsMultipartFile)file; DiskFileItem fi = (DiskFi ...

  10. IOS- 02 零碎知识总结

    1.UIView,UIViewController,UIWindow和CALayer UIView是什么,做什么:UIView是用来显示内容的,可以处理用户事件 CALayer是什么,做什么:CALa ...