asp.net 使用一般处理程序和ajax post实现登录以及记住密码
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实现登录以及记住密码的更多相关文章
- Asp.net web服务处理程序(第六篇)
四.Web服务处理程序 对于Web服务来说,标准的方式是使用SOAP协议,在SOAP中,请求和回应的数据通过XML格式进行描述.在Asp.net 4.0下,对于Web服务来说,还可以选择支持Ajax访 ...
- ASP.NET Core Razor中处理Ajax请求
如何ASP.NET Core Razor中处理Ajax请求 在ASP.NET Core Razor(以下简称Razor)刚出来的时候,看了一下官方的文档,一直没怎么用过.今天闲来无事,准备用Rozor ...
- ASP.NET MVC3入门教程之ajax交互
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=100&extra=page%3D1 随着web技术的不断发展与 ...
- 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 ...
- Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较
Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...
- PHP+jQuery+Ajax实现用户登录与退…
用户登录与退出功能应用在很多地方,而在有些项目中,我们需要使用Ajax方式进行登录,登录成功后只刷新页面局部,从而提升了用户体验度.本文将使用PHP和jQuery来实现登录和退出功能. 查看演示DEM ...
- ASP.NET中登录时记住用户名和密码(附源码下载)--ASP.NET
必需了解的:实例需要做的是Cookie对象的创建和对Cookie对象数据的读取,通过Response对象的Cookies属性创建Cookie,通过Request对象的Cookies可以读取Cookie ...
- Ajax异步提交登录(2)--登录使用
http://cjp1989.iteye.com/blog/1740964 1.Ajax的原理: Ajax的原理就是:通过javascript的方式,将前台数据通过xmlhttp对象传递到后台,后台在 ...
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截
程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构 .要想在之后的江湖历练中通关,数据结构必不可少. ...
随机推荐
- PHP5.5特性
1.PHP生成器(使用yield关键字) <?php //使用yield关键字实现平方的生成器,在循环结构中则生成的是数组 function do2pos($n){ for($i=1; $i&l ...
- 非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通过id进行维护与建文件
非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通 ...
- Beyond Compare 4过期
试用期到期操作:找到beyond Compare 4文件夹下面的BCUnrar.dll,将其删掉或者重命名,再重新打开接着使用!
- HDU4296-ChengduOnling-贪心
某人要搬砖盖一栋楼,有m块砖,每块有两个值w和s,表示重量和强度.楼盖好后每块砖有一个危险值,表示为此砖之上的砖的重量和减此砖的强度,即Σ0(j-1)w - sj. 整体危险值是每块砖危险值的最大值. ...
- UUID类型如何比较是否相等
直接使用equals方法 UUID x = UUID.fromString("062db347-6a72-69a1-40c0-7516e0a26459"); UUID y = UU ...
- 洛谷P3515 [POI2011]Lightning Conductor(动态规划,决策单调性,单调队列)
洛谷题目传送门 疯狂%%%几个月前就秒了此题的Tyher巨佬 借着这题总结一下决策单调性优化DP吧.蒟蒻觉得用数形结合的思想能够轻松地理解它. 首先,题目要我们求所有的\(p_i\),那么把式子变一下 ...
- 10 Zabbix Item类型之Zabbix IPMI类型
点击返回:自学Zabbix之路 Zabbix Item类型之Zabbix IPMI类型 一般使用zabbix IPMI 监控硬件信息,比如说温度. 在编译安装zabbix server的时候,一定要加 ...
- 【BZOJ3879】SvT(后缀自动机,虚树)
[BZOJ3879]SvT(后缀自动机,虚树) 题面 BZOJ 题解 看着这个东西,询问若干个前缀两两之间的\(lcp\)? 显然\(lcp\)就是\(SAM\)构建出来的\(parent\)数上的\ ...
- 学习2__STM32--汉字显示
汉字显示操作流程 第一,进入主函数 int main(void) { u32 fontcnt; u8 i,j; u8 fontx[];//gbk码 u8 key,t; delay_init(); // ...
- luogu2542 航线规划 (树链剖分)
不会lct,所以只能树剖乱搞 一般这种删边的题都是离线倒着做,变成加边 他要求的结果其实就是缩点以后两点间的距离. 然后先根据最后剩下的边随便做出一个生成树,然后假装把剩下的边当成加边操作以后处理 这 ...