Asp.Net+Extjs实现登录

通过对Ext的学习,发现学习分三部曲:1.看官网的Demo,宏观了解Ext能做什么;2.看相关书籍,做理论指导;3.实现官网的Demo,体会Ext的真谛。

在完毕了第一、二部后,如今我们须要做的是实现第三步,我的目标效果是用Extjs画页面,用Asp.Net的一般处理程序做后台server实现登录功能。

宏观上的指导有了,以下进行细分,我整理了实现过程,思路例如以下:

1.画一个登录的Panel--loginPanel;

2.定义一个检測是否登录成功的函数CheckLogin;

3.定义一个登录窗口--win,将loginPanel加入到登录窗口中;

4.在登录窗口中加入“确定”和“取消”,为“确定”button绑定登录验证函数CheckLogin;

5.为登录窗口绑定一个最小化事件;

6.定义一个登录成功弹出新窗口函数loginSuccess

有了理论指导,以下进行代码实现:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <link href="css/ext-all.css" rel="stylesheet" type="text/css" />
    <script src="js/ext-base.js" type="text/javascript"></script>
    <script src="js/ext-all.js" type="text/javascript"></script>
    <script type="text/javascript" language="javascript">
        var loginPanel;
        Ext.onReady(function () {
            //1.画一个登录的Panel
            loginPanel = new Ext.form.FormPanel({
                labelWidth: 40,
                width: 230,
                height: 120,
                frame: true,
                bodyStyle: "padding:20", //给这个面板加入内间距
                items: [
                        { xtype: "textfield", id: "userName", fieldLabel: "username", style: "margin:1 3 15 3", labelWidth: 10, emptyText: "请输入username...", allowBlank: false, blankText: "username不能为空" },
                     { xtype: "textfield", id: "userPass", fieldLabel: "密   码", style: "margin:1 3 15 3", labelWidth: 10, inputType: "password" }
                  ]
            });

            //2.定义一个检測是否登录成功的函数CheckLogin
            function CheckLogin() {
                var userName = Ext.getCmp("userName").getValue(); //username
                var userPass = Ext.getCmp("userPass").getValue(); //密 码 

                if (Ext.util.Format.trim(userName) == "" || Ext.util.Format.trim(userPass) == "") {//username和password不能为空
                    Ext.Msg.alert("提示", "username或password不能为空");
                    return;
                }

                Ext.Ajax.request({
                    url: "Extjs.ashx?userName=" + userName + "&passWord=" + userPass, //将username和password传送到url
                    method: "get",
                    success: function (response) {
                        var getData = response.responseText; //获取服务器数据
                        if (getData == "ok") {
                            loginSuccess(); //登录成功了
                        } else {
                            Ext.Msg.alert("警告", "登录失败!");
                        }
                    }, failure: function (response, options) { alert("失败"); }
                });
            }

            //3.定义一个登录窗口--win,将loginPanel加入到登录窗口中;
            var win = new Ext.Window({
                title: "登录窗口",
                minimizable: true, //最小化
                maximizable: true, //最大化
                width: 240,
                height: 186,
                frame: true,
                items: [loginPanel],
                //4.在登录窗口中加入“确定”和“取消”,为“确定”按钮绑定登录验证函数CheckLogin
                buttons: [{ text: "确定", handler: CheckLogin }, { text: "取消"}]
            });

            //5.为登录窗口绑定一个最小化事件
            win.minimize = function () {
                Ext.MessageBox.confirm("提示", "是否要最小化", minwindow);
                function minwindow(btn) {
                    if (btn == "yes") {
                        Ext.Msg.alert("提示", "确定最小化么", function () { alert("成功最小化"); });
                    }
                }
            }

            //6.定义一个登录成功弹出新窗口函数loginSuccess;
            function loginSuccess() {
                var winLoginSuccess = new Ext.Window({
                    title: "登录成功后的窗口",
                    minimizable: true, //最小化
                    maximizable: true, //最大化
                    collapsible: true,
                    width: 550,
                    height: 550,
                    frame: true,
                    items: [{ xtype: "button", frame: true, text: "我是登录成功后窗口的一个按钮"}]
                });
                win.hide(); //登录窗口隐藏
                winLoginSuccess.show(); //显示登录成功后的窗口
            }

            win.show(); //显示窗口
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>

后台Extjs一般处理程序的代码实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Demo
{
    /// <summary>
    /// Extjs 的摘要说明
    /// </summary>
    public class Extjs : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string userName = context.Request.QueryString["userName"];
            string userPass = context.Request.QueryString["passWord"];
            if (userName == "quwenzhe" && userPass == "123")
            {
                context.Response.Write("ok"); //假设验证成功则返回ok
            }
            else
            {
                context.Response.Write("fail");//假设验证失败则返回fail
            }
            context.Response.End();

        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

代码的运行过程:当点击确定button后,会触发CheckLogin函数,CheckLogin通过Ajax将获取的数据传到Extjs一般处理程序进行检验,并获取Extjs一般处理程序的返回值。假设返回值是ok,则调用loginSuccess函数弹出新窗口;否则,则弹出登录失败的提示。

执行代码后,登录页面效果图例如以下:

登录成功后的效果图例如以下:

到此,用Extjs实现的登录功能已经完毕。此外, 在学习过程中,发现自己存在浅尝辄止的问题,刚学会一点就以为自己明确了,希望大家能引以为戒,不要犯相同的错误。

Ext是个非常好的框架,学好它在非常大程度上能帮助我们学习DWZ,希望大家能用心学习这块。

时间: 2024-08-29 07:12:05

Asp.Net+Extjs实现登录的相关文章

教你开发asp.net的单点登录系统

单点登录系统,简称SSO.以下是我花了几个小时写的一个简单实现.特把实现思路和大家分享. 背景:某项目使用ASP.NET MemberShip来做会员系统,需要同时登录多个系统.而项目的开发人员无法在MemberShip基础上做单点登录. 故这个单点登录系统需要能无缝集成到这些系统中的任何系统中,作为服务端. 下面我们来看看具体的实现步骤,没耐心看完的朋友可直接上github上查阅:(https://github.com/newmin/cms/blob/master/extend/Ops.Cms

asp.net 完善注册登录+sqlite数据库

结合sqlite数据库,完善asp.net制作的web网页中的注册和登录操作. 1. Account-Register.aspx <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <asp:Content

ASP.NET5使用FaceBook登录

原版教程 使用VS2015创建Web应用: 此教程使用的是FaceBook账号登录,需要添加相关的类,打开Nuget: 搜索Microsoft.AspNet.Authentication.Facebook并安装: 右键点击项目属性,开启SSL: 在Startup.cs的Configure方法中添加: 1 app.UseFacebookAuthentication(options => 2 { 3 options.AppId = Configuration["Authentication:F

asp.net web 开发登录相关操作的控件LoginName、LoginStatus和LoginView控件使用详解

http://book.51cto.com/art/200909/154039.htm http://book.51cto.com/art/200909/154041.htm ASP.NET提供了一套用来实现登录的.可靠的.完整的登录控件.这些控件包括Login.LoginView.LoginStatus.LoginName.PasswordRecovery.CreateUserWizard和ChangePassword控件.它们的功能如下所述. Login控件:实现登录功能,执行验证用户身份的

ASP.NET Cookie的登录验证

做用户登录,我一直用form验证的方式.有时候,为了节省时间,用户希望用户名输入框能够记住用户名,省得下次重新输入.这个时候光用form验证是不行的,因为form验证的话,用户一退出系统就失效了,所以需要借助于Cookie. 本以为做这个会很轻松,谁知花了不少时间也没有成功.虽然检验用户名和密码都是正确的,但系统总是拒绝登录,然后返回到登录页面.登录页面的用户名输入框记是记住用户名了,但用户名是乱码的. 真是郁闷至极!一度以为系统发生了错乱,重启机器也还是无济于事.经反复检查和测试发现,如果在f

ASP.NET中获取登录用户ID 用户身份验证(转载)

如果VS2005及VS2008中使用菜单[网站]-[ASP.NET配置]进入使用网站管理工具(WAT)的表单验证(Forms验证)方式来建立网站数据库,默认数据库名为ASPNETDB.MDF.系统将会自动建立一套系统数据表(VS2008中为11个这样的数据表),利用这个系统数据表可以快捷地进行创建新用户.角色.用户登录.修改用户口令等开发. 在后续开发过程中,需要反复使用用户ID.判断用户是否为登录用户或者是否为某一角色,这些常用操作如下: 1.获取当前登录用户ID Membership.Get

asp.net core2.0 登录效果实现

基础 新建项目的,新建登录页的基本操作略,主要说下在实现登录过程碰到的问题,废话不多说,让我们进入主题. 验证码 asp.net.core2.0本身有提供system.drawing命名空间,但是没有Image,Graphics,Bitmap等对象的实现,只能引用第三方的dll来操作. 1.在vs的项目里打开nuget包管理器,搜索关键字"drawing",显示很多可用的包,选择安装"zkweb.system.drawing" 包 2.实现随机字符串的图片显示代码

Asp.Net 实现Form登录验证

一.新建Asp.Net项目 1.操作步骤:模板->Visual C#->Windows->Web,修改名称.位置->确定,进入模板选择页 2.在模板选择页中,选择空模板Empty,身份验证:不进行身份验证:这里我们不使用VS的模板,我们从零开始,确定创建项目. 3.右键项目LoginForm,添加两个Web窗体:Login.aspx.Main.aspx; 添加Login页面 添加Main页面 添加完毕 二.项目创建完.添加了登录页面和主页面之后,我们来编辑一个简单的登录页面和主页面

ASP.NET MVC单点登录(多站点共享用户信息)

一.多站点共享用户信息解决方案: 采用分布式缓存Memcache模拟Session进行用户信息信息共享 1.视图部分 @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>XX商城后台管理系统登录</title> <script type="text/javascript"> if (window.parent.window != window) { wi