1.登录页面login.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="loginDemo.aspx.cs" Inherits="WebThreadTest.loginDemo" %>

<!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 runat="server">
<title>无标题页</title> <script src="js/jquery-1.3.2.min.js" type="text/javascript"></script> <script src="js/jquery.cookie.js" type="text/javascript"></script>
</head>
<body> <div>
登录名
<input type="text" id="txtLoginName" />
<br />
密码
<input type="password" id="txtPassword" />
<br /> <input type="checkbox" id="cbRemember" />
<label for="cbRemember">记住密码</label> <input type="submit" value="登录" onclick="login();"/>
</div> <script type="text/javascript"> $(function(){ if ($.cookie("cbRemember") == "true") { $("#cbRemember").attr("checked", true);
$("#txtLoginName").val($.cookie("loginName"));
$("#txtPassword").val($.cookie("passWord"));
//获取url中从?开始获取值: ?logout=true
var params = window.location.search;
var paramArray = params.split("logout=");
//当不是退出时 执行自动登录
if(paramArray[1]!="true")
{
login();
}
} }); function login(){ var loginName = $("#txtLoginName").val();
var password = $("#txtPassword").val(); var p = {};
p.loginName = loginName;
p.password = password; $.post("login.ashx",p,function(r){ if(r=="ok")
{
if ($("#cbRemember").is(":checked")) {
var txtLoginNameName = $("#txtLoginName").val();
var passWord = $("#txtPassword").val();
$.cookie("cbRemember", "true", { expires: 7 }); // 存储一个带7天期限的 cookie
$.cookie("loginName", txtLoginNameName, { expires: 7 }); // 存储一个带7天期限的 cookie
$.cookie("passWord", passWord, { expires: 7 }); // 存储一个带7天期限的 cookie
}
else {
$.cookie("cbRemember", "false", { expires: -1 });
$.cookie("loginName", '', { expires: -1 });
$.cookie("passWord", '', { expires: -1 });
} //alert("登录成功");
window.location="/";
}
else
{
$.cookie("cbRemember", "false", { expires: -1 });
$.cookie("loginName", '', { expires: -1 });
$.cookie("passWord", '', { expires: -1 });
alert("登录名或密码错误");
}
}); } </script>
</body>
</html>

2、login.aspx.cs页面

  protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
object loginName = Session["loginName"];
object password = Session["password"]; if (loginName != null && password != null)
{
Response.Redirect("/");
}
}
}

3.login.ashx

using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Web.SessionState; namespace WebThreadTest
{
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class login : IHttpHandler, IRequiresSessionState
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain"; string loginName = context.Request["loginName"];
string password = context.Request["password"];
if (loginName == "admin" && password == "")
{
context.Session["loginName"] ="admin"; context.Session["password"] = "";
context.Response.Write("ok");
}
else
{ context.Response.Write("error");
} } public bool IsReusable
{
get
{
return false;
}
}
}
}

备注:

1.在aspx和aspx.cs中,都是以Session["xxx"]="aaa"和aaa=Session["xxx"].ToString()进行读写。而在ashx中,Session都要使用context.Session,读写方法不变。

2.在ashx文件中,若要对Session进行成功的读写,应该在使用Session的class后增加接口IRequiresSessionState(注意:需要引入:using System.Web.SessionState;),否则context.Session["xxx"]读出的总是null

那么,在aspx、aspx.cs和ashx中可以使用Session后,我们在AppCode的cs文件中,如何操作Session或者得到访问者的IP?

首先,aspx.cs 中是直接Request和Session,而在ashx中是context.Request和context.Session。aspx.cs中可以直接 使用,是因为有Web.UI的支持,而ashx中只能靠传进去的HttpContext实例对Request和Session等进行操作。那么同样 的,AppCode中的cs文件中也没有Web.UI,但是没有HttpContext参数,如果cs中可以得到当前的HttpContext,那么自然 而然就可以根据这个HttpContext去操作Request和Session。

HttpContext类中有一个静态属性叫Current,我们可以通过这个属性去得到当前的HttpContext。当然,在cs中要操作Session,也应该增加IRequiresSessionState接口。

与Session、Request、Response、Server等相关的方法和属性,都可以根据这个模式、方法去套用。

比如,在AppCode的cs文件中要得到当前访问者的IP,可以用HttpContext.Current.Request.UserHostAddress。

asp.net 使用一般处理程序和ajax post实现登录以及记住密码的更多相关文章

  1. Asp.net web服务处理程序(第六篇)

    四.Web服务处理程序 对于Web服务来说,标准的方式是使用SOAP协议,在SOAP中,请求和回应的数据通过XML格式进行描述.在Asp.net 4.0下,对于Web服务来说,还可以选择支持Ajax访 ...

  2. ASP.NET Core Razor中处理Ajax请求

    如何ASP.NET Core Razor中处理Ajax请求 在ASP.NET Core Razor(以下简称Razor)刚出来的时候,看了一下官方的文档,一直没怎么用过.今天闲来无事,准备用Rozor ...

  3. ASP.NET MVC3入门教程之ajax交互

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=100&extra=page%3D1 随着web技术的不断发展与 ...

  4. ASP.NET MVC WebGrid – Performing true AJAX pagination and sorting 【转】

    ASP.NET MVC WebGrid – Performing true AJAX pagination and sorting FEBRUARY 27, 2012 14 COMMENTS WebG ...

  5. Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

    Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...

  6. PHP+jQuery+Ajax实现用户登录与退…

    用户登录与退出功能应用在很多地方,而在有些项目中,我们需要使用Ajax方式进行登录,登录成功后只刷新页面局部,从而提升了用户体验度.本文将使用PHP和jQuery来实现登录和退出功能. 查看演示DEM ...

  7. ASP.NET中登录时记住用户名和密码(附源码下载)--ASP.NET

    必需了解的:实例需要做的是Cookie对象的创建和对Cookie对象数据的读取,通过Response对象的Cookies属性创建Cookie,通过Request对象的Cookies可以读取Cookie ...

  8. Ajax异步提交登录(2)--登录使用

    http://cjp1989.iteye.com/blog/1740964 1.Ajax的原理: Ajax的原理就是:通过javascript的方式,将前台数据通过xmlhttp对象传递到后台,后台在 ...

  9. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截

    程序猿修仙之路--数据结构之你是否真的懂数组?   数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少. ...

随机推荐

  1. [转]ubuntu中查找软件的安装位置

    原博客地址:http://www.cnblogs.com/zhuyatao/p/4060559.html ubuntu中的软件可通过图形界面的软件中心安装,也可以通过命令行apt-get instal ...

  2. 关于ListBox在Grid中无法充满的问题

    WPF布局的时候发现一个问题,ListBox放在Grid中的时候,老是无法充满整个Grid,但是查看代码也没有设置相关的属性,原来在设置ListBox之前首先要让ListBox的容器充满,然后List ...

  3. BZOJ1093 ZJOI2007最大半连通子图(缩点+dp)

    发现所谓半连通子图就是缩点后的一条链之后就是个模板题了.注意缩点后的重边.写了1h+真是没什么救了. #include<iostream> #include<cstdio> # ...

  4. Cuba项目配置IDEA,如何dubug

    1.在cuba中编辑端口,如下图: 2.在IDEA中添加一个远程链接,添加为对应的端口号,然后运行debug即可 如果两个端口号不对应,就会报出以下的错误:unable to open debugge ...

  5. copy elison & RVO & NRVO

    蓝色的博文 To summarize, RVO is a compiler optimization technique, while std::move is just an rvalue cast ...

  6. 洛谷P2257 YY的GCD

    今日份是数论 大概是..从小学奥数到渐渐毒瘤 那就简单列一下目录[大雾 同余 质数密度 唯一分解定理 互质 完全剩余系 简化剩余系 欧拉函数 逆元 斐蜀定理 阶(及其性质) 欧拉定理 费马小定理 原根 ...

  7. springmvc源码解析MvcNamespaceHandler之<mvc:view-resolvers>

    说在前面 本次主要介绍springmvc配置解析. springmvc配置解析 本次介绍MvcNamespaceHandler. 进入到这个方法org.springframework.web.serv ...

  8. 【原创】python多线程测试接口性能

    除了使用性能测试工具进行性能测试,我们也可以直接用python多线程进行性能测试. 下面,使用这几个模块,对一个查询接口做性能测试: requests:发送http请求 json:返回的字符串转换成j ...

  9. typescript函数(笔记非干货)

    函数类型 Function Type 为函数定义类型 Define types for functions 我们可以给每个参数添加类型之后再为函数本身添加返回值类型. TypeScript能够根据返回 ...

  10. 跟我一起使用electron搭建一个文件浏览器应用吧(三)

    第二篇博客中我们可以看到我们构建的桌面应用会显示我们的文件及文件夹. In the second blog, we can see that the desktop application we bu ...