.net+jquery+ashx实现客户端模拟登陆扩展

客户端实现:login

namespace LoginApp
{
    partial class Form1
    {
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows 窗体设计器生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.txtPwd = new System.Windows.Forms.TextBox();
            this.txtUserName = new System.Windows.Forms.TextBox();
            this.label2 = new System.Windows.Forms.Label();
            this.label1 = new System.Windows.Forms.Label();
            this.btnClose = new System.Windows.Forms.Button();
            this.btnLogin = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // txtPwd
            // 
            this.txtPwd.Location = new System.Drawing.Point(191, 100);
            this.txtPwd.Margin = new System.Windows.Forms.Padding(4);
            this.txtPwd.Name = "txtPwd";
            this.txtPwd.PasswordChar = '*';
            this.txtPwd.Size = new System.Drawing.Size(124, 25);
            this.txtPwd.TabIndex = 11;
            this.txtPwd.Text = "admin";
            // 
            // txtUserName
            // 
            this.txtUserName.Location = new System.Drawing.Point(191, 55);
            this.txtUserName.Margin = new System.Windows.Forms.Padding(4);
            this.txtUserName.Name = "txtUserName";
            this.txtUserName.Size = new System.Drawing.Size(124, 25);
            this.txtUserName.TabIndex = 10;
            this.txtUserName.Text = "admin";
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(78, 100);
            this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(37, 15);
            this.label2.TabIndex = 9;
            this.label2.Text = "密码";
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(78, 55);
            this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(52, 15);
            this.label1.TabIndex = 8;
            this.label1.Text = "用户名";
            // 
            // btnClose
            // 
            this.btnClose.Location = new System.Drawing.Point(207, 168);
            this.btnClose.Margin = new System.Windows.Forms.Padding(4);
            this.btnClose.Name = "btnClose";
            this.btnClose.Size = new System.Drawing.Size(125, 29);
            this.btnClose.TabIndex = 7;
            this.btnClose.Text = "关闭";
            this.btnClose.UseVisualStyleBackColor = true;
            this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
            // 
            // btnLogin
            // 
            this.btnLogin.Location = new System.Drawing.Point(55, 168);
            this.btnLogin.Margin = new System.Windows.Forms.Padding(4);
            this.btnLogin.Name = "btnLogin";
            this.btnLogin.Size = new System.Drawing.Size(125, 29);
            this.btnLogin.TabIndex = 6;
            this.btnLogin.Text = "登录";
            this.btnLogin.UseVisualStyleBackColor = true;
            this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(387, 253);
            this.Controls.Add(this.txtPwd);
            this.Controls.Add(this.txtUserName);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.btnClose);
            this.Controls.Add(this.btnLogin);
            this.Name = "Form1";
            this.Text = "登录";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.TextBox txtPwd;
        private System.Windows.Forms.TextBox txtUserName;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Button btnClose;
        private System.Windows.Forms.Button btnLogin;
    }
}
View Code

后台登陆代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace LoginApp
{
    public partial class Form1 : Form
    {
        string strURL = "http://localhost:50229/Ashx/Login.ashx";
        public Form1()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLogin_Click(object sender, EventArgs e)
        {
            string name = this.txtUserName.Text.Trim();
            string pwd = this.txtPwd.Text.Trim();
            // string postData = name;//要提交的数据
            //GetPage(strURL, postData);
            //定义返回json数据 解析json数据并显示信息到窗体控件值上
            // string jsoncontent = GetPage(strURL, postData);

            //List<Custerm> CustermList = JsonConvert.DeserializeObject<List<Custerm>>(jsoncontent);

            //foreach (Custerm custerm in CustermList)
            //{

            //    this.txtName.Text = custerm.CustermName;
            //}  

            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("name={0}&pwd={1}", name, pwd);
            string result = GetPage(strURL, sb.ToString());
            switch (result)
            {
                case "1":
                    MessageBox.Show("登录成功!");
                    break;
                case "2":
                    MessageBox.Show("登录失败!");
                    break;
                default:
                    MessageBox.Show("登录参数错误!");
                    break;
            }
        }

        /// <summary>  
        /// Post数据到web服务端  
        /// </summary>  
        /// <param name="strURL">网址</param>  
        /// <param name="postData">参数</param>  
        /// <returns></returns>  
        public string GetPage(string strURL, string postData)
        {
            Stream outstream = null;
            Stream instream = null;
            StreamReader sr = null;
            HttpWebResponse response = null;
            HttpWebRequest request = null;
            Encoding encoding = System.Text.Encoding.GetEncoding("UTF-8");
            
            byte[] data = encoding.GetBytes(postData);
            // 准备请求...  
            try
            {
                // 设置参数  
                request = WebRequest.Create(strURL) as HttpWebRequest;
                CookieContainer cookieContainer = new CookieContainer();
                request.CookieContainer = cookieContainer;
                request.AllowAutoRedirect = true;
                //Post请求方式
                request.Method = "POST";
                //是否保持常连接
                request.KeepAlive = false;
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)";
                //内容类型
                request.ContentType = "application/x-www-form-urlencoded";
                //表示请求消息正文的长度
                request.ContentLength = data.Length;
                outstream = request.GetRequestStream();
                //send the data//将传输的数据,请求正文写入请求流
                outstream.Write(data, 0, data.Length);
                outstream.Close();
                //发送请求并获取相应回应数据  
                response = request.GetResponse() as HttpWebResponse;
                //直到request.GetResponse()程序才开始向目标网页发送Post请求  
                instream = response.GetResponseStream();//获得请求流
                sr = new StreamReader(instream, encoding);
                //返回结果网页(html)代码  
                string content = sr.ReadToEnd();
                Console.WriteLine(content);
                string err = string.Empty;
                return content;

            }
            catch (Exception ex)
            {
                string err = ex.Message;
                return string.Empty;
            }
        }       
        /// <summary>
        /// 关闭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
View Code

服务端login

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>系统登录</title>
    <script type="text/javascript" src="Scripts/jquery-1.11.0.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#btnLogin").click(function () {
                var name = $("#txtUserName").val();
                var pwd = $("#txtPwd").val();
                $.ajax({
                    url: "Ashx/Login.ashx",
                    data: "name=" + name + "&pwd=" + pwd,
                    type: "Post",
                    dataType: "text",
                    success: function (msg) {
                        if (msg == "1") {
                            $("#divMsg").html("登录成功!");
                        } else {
                            $("#divMsg").html("登录失败!");
                        }
                    }


                });
            });
        });
    </script>
</head>
<body>
    <div style="text-align:center;">
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" id="txtUserName" name="name" value="admin" /></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" id="txtPwd" name="name" value="admin" /></td>
            </tr>
            <tr>
                <td colspan="2"><input type="button" id="btnLogin" name="name" value="登录" /></td>
            </tr>
        </table>
        <div id="divMsg"></div>
    </div>
</body>
</html>
View Code

一般处理程序;Login.ashx

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

namespace LoginWebApp.Ashx
{
    /// <summary>
    /// Login 的摘要说明
    /// </summary>
    public class Login : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //接收客户端传送过来的用户名和密码
            string name = context.Request["name"];
            string pwd = context.Request["pwd"];
            Userinfo info = new Userinfo();
            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(pwd))
            {
                context.Response.Write("2");
                //登录失败
            }
            else
            { 
                if (name == "admin" && pwd == "admin")
                {
                    //登录成功记入cookie
                    context.Response.Cookies["n"].Value = name;
                    context.Response.Cookies["n"].Expires = DateTime.Now.AddDays(7);
                    context.Response.Cookies["p"].Value = pwd;
                    context.Response.Cookies["p"].Expires = DateTime.Now.AddDays(7);
                    context.Response.Write("1");
                    //登陆成功
                }
                else
                {
                    context.Response.Write("2");
                }
            }
        }

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

引用jquery jquery-1.11.0.js以及样式 后端登录可以扩展实现数据库的访问方式获取用户名和密码判断登录

这里主要展现实现模拟登陆的方式  看了其他文章 跟以前做的有点相似所以在此做个改动 其实原理一样。

posted @ 2014-04-09 10:27  蜜雪粮液  阅读(838)  评论(0编辑  收藏  举报