用户登录之asp.net cookie的写入、读取与操作

页面前面:
<div id="login" runat="server">
<span class="log_title">账号(昵称):</span><input class="log_input" runat="server" id="t_LogName" name="t_LogName" type="text" placeholder="请输入账号(昵称)" />
<span class="log_title">密码:</span><input class="log_input" runat="server" id="t_LogPass" name="t_LogPass" type="password" placeholder="请输入密码" />
<asp:Button ID="Button1" runat="server" Text="登陆" OnClick="Button1_Click" CssClass="button"
EnableTheming="False" />
<asp:Button ID="Button2" runat="server" CssClass="button" Text="注册" PostBackUrl="~/regist.aspx"></asp:Button>
</div>
<div id="logstate" runat="server" visible="false">欢迎您:<span><asp:Literal ID="uesrName" runat="server"></asp:Literal></span><a runat="server" onserverclick="out_click">退出</a></div>
要引入的样式:
#login { top:; left: ; width:580px;height:25px;background:pink;position: relative;float:left}
.button { height: 25px;font-size: 14px; background-color: #0998ff; color: #FFF;padding:3px 12px 5px 12px;border: 0px; vertical-align: middle;margin-left:5px;float:left; }
.button:hover{ background-color: #6699FF;color:#;cursor:pointer }
.log_input{background-color:#FFF; border:1px solid #d5cfc2;width:130px;height:23px; font-size:14px;vertical-align:middle;float:left}
.log_title{width:90px; display:inline-block; text-align:right;line-height:25px; float:left;color:#FFF;}
#Head_logstate {/*width:200px;*/height:25px;color:#FFF;font-size:14px;line-height: 25px;/*background:blue;*/float:left;position: relative;}
#Head_logstate span { color:#f00;font-weight:;margin-right:20px}
#Head_logstate a {height:25px;font-size: 14px; background-color: #0998ff; color: #FFF;padding: 12px 12px;border: 0px; vertical-align: middle;float:right}
#Head_logstate a:hover{ background-color: #6699FF;color:#;cursor:pointer }
说明一下,应该是我把这个放在控件Head里,所以引入页面的时候,
logstate这个样式找不到,后来,我就改是
#Head_logstate,才显示正常,而在控件里div的样式还是用的
<div id="logstate" runat="server" visible="false">....
控件的cs核心代码:
protected string mynames;
protected string myID;
protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack) {
HttpCookie cookie = Request.Cookies["nickname"];
if (cookie != null) {
mynames = cookie.Value;
GetLogin();
} }
}
protected void Button1_Click(object sender, EventArgs e) {
string name = t_LogName.Value.Trim();
string pw = t_LogPass.Value.Trim();
if (name.IndexOf("'") > || name.IndexOf("--") > ) {
HelperJS.Show(this.Page, "账号(昵称)存在非法字符!");
return;
}
if (name != string.Empty && pw != string.Empty) {
//检查用户名密码
DataTable dt = HelperExecuteSql.Query("select ID,nickname,pw from _user where nickname='" + name + "' and pw ='" + pw + "'").Tables[];
if (dt.Rows.Count > ) {
myID = dt.Rows[]["ID"].ToString();
//Session["nickname"] = name;
//Session["ID"] = Convert.ToInt32(dt.Rows[0][0].ToString());
//uesrName.Text = dt.Rows[0]["nickname"].ToString();
if (Request["ReturnUrl"] == null || Request["ReturnUrl"] == "") {
string nowtime = DateTime.Now.ToString(); //获取当前时间
HttpCookie cookie = new HttpCookie("nickname", HttpUtility.UrlEncode(name));//获取用户的用户名
cookie.Expires = DateTime.Now.AddHours();//设置cookie过期时间为2小时后
Response.Cookies.Add(cookie);//将cookie写入客户端
HttpCookie cookie1 = new HttpCookie("nowTime", nowtime);
cookie1.Expires = DateTime.Now.AddHours();//设置cookie过期时间为2小时后
Response.Cookies.Add(cookie1);//将cookie1写入客户端
HttpCookie cookie2 = new HttpCookie("ID", myID);//获取用户的ID
Response.Cookies.Add(cookie2);//将cookie2写入客户端
Response.Write(" <script language=javascript>window.location.href=document.URL;</script>"); //刷新
}
else {
Server.Transfer(Request["ReturnUrl"]);
}
}
else {
HelperJS.Show(this.Page, "用户名或密码不正确!");
}
}
else {
HelperJS.Show(this.Page, "用户名或密码不能为空!");
}
}
protected void out_click(object sender, EventArgs e) //退出
{
Response.Cookies["nickname"].Expires = DateTime.Now;//cookie将马上过期
login.Visible = true;
logstate.Visible = false;
Response.Write(" <script language=javascript>window.location.href=document.URL;</script>"); //刷新
}

参考资料 http://www.cnblogs.com/sosoft/p/3547471.html
编写Cookie
//方式1:
Response.Cookies["username"].value="mike";
Response.Cookies["username"].Expires=DateTime.MaxValue; //方式2:
HttpCookie acookie = new HttpCookie("last");
acookie.Value="a";
acookie..Expires=DateTime.MaxValue;
Response.Cookies.Add(acookie); //多值Cookie的写法 http://www.cnblogs.com/sosoft/ //方式1:
Response.Cookies["userinfo1"]["name"].value="mike";
Response.Cookies["userinfo1"]["last"].value="a";
Response.Cookies["userinfo1"].Expires=DateTime.MaxValue; //方式2:
HttpCookie cookie = new HttpCookie("userinfo1");
cookie.Values["name"]="mike";
cookie.Values["last"]="a";
cookie.Expires=DateTime.MaxValue;
//cookie.Expires = System.DateTime.Now.AddDays(1);//设置过期时间 1天
Response.Cookies.Add(cookie);
读取Cookie
If (Request.Cookies["userName"]!=null)
{
string str = Request.Cookies("userName").Value;
} //多值Cookie的读取
If ( Request.Cookies["userInfo1"]!=null )
{
string name=Request.Cookies["userInfo1"]["name"];
string last=Request.Cookies["userInfo1"]["last"];
} //读取 Cookie 集合
for(int i = ;i<Request.Cookies.Count ;i++)
{
HttpCookie cookies = Request.Cookies;
Response.Write("name="+cookies.Mame+"<br/>");
if (cookies.HasKeys )//是否有子键
{
System.Collections.Specialized.NameValueCollection NameColl
= aCookie.Values ;
for(int j=;j<NameColl.Count;j++)
{
Response.Write("子键名="+ NameColl.AllKey[j] +"<br/>");
Response.Write("子键值="+ NameColl[j] +"<br/>");
} }
else
{
Response.Write("value="+cookies.Value+"<br/>");
}
}
http://www.cnblogs.com/yinrq/p/5019448.html
ASP.NET对Cookie的CURD操作
//写入Cookie三种方式
//方式1
var cookie = new HttpCookie("name", "joye888");
Response.Cookies.Add(cookie);
//方式2
Response.Cookies["name1"].Value = "joye8881";
Response.Cookies["name1"].Expires = DateTime.MaxValue;
//方式3
var acookie = new HttpCookie("name2");
acookie.Value = "joye8882";
acookie.Expires = DateTime.MaxValue;
Response.Cookies.Add(acookie); //写入多值Cookie
//方式1:
//Response.Cookies["userinfo"]["name"].Value = "joye888";
//Response.Cookies["userinfo"].Expires = DateTime.MaxValue; //方式2:
HttpCookie cookie2 = new HttpCookie("userinfo");
cookie2.Values["name"] = "joye888";
cookie2.Expires = DateTime.Now.AddDays();
Response.Cookies.Add(cookie2); //读取Cookie的值之前,应该确保该 Cookie 确实存在。否则,您将得到一个异常
//读取Cookie
var httpCookie = Request.Cookies["name1"];
if (httpCookie != null)
{
var name = httpCookie.Value;
}
//多值Cookie的读取
var httpCookie1 = Request.Cookies["userInfo"];
if (httpCookie1 != null)
{
var name1 = httpCookie1["name"];
} //修改和删除cookie
//修改的方法与创建方法相同
var cookieEdit = new HttpCookie("name", "joye888Edit");
cookieEdit.Expires = DateTime.Now.AddDays(-); //将其有效期设置为过去的某个日期。当浏览器检查 Cookie 的有效期时,就会删除这个已过期的 Cookie。
Response.Cookies.Add(cookieEdit); //如果有主站及二级域名站且cookie要共享的话则要加入如下设置
cookie.Domain = ".cnblog.com";
cookie.Path = "/"; public static void AddCookie(string key,string value,int expires)
{
var acookie = new HttpCookie(key);
acookie.Value = value;
acookie.Domain = ".cnblog.com";
acookie.Path = "/";
acookie.Expires = DateTime.Now.AddMinutes(expires);
HttpContext.Current.Response.Cookies.Add(acookie);
} public static string GetCookie(string key)
{
var httpCookie = HttpContext.Current.Request.Cookies[key]; if (httpCookie != null)
{
return httpCookie.Value;
}
return "";
}
登录记住用户名和密码示例
<body>
<form id="form1" method="post" action="rembPage.aspx">
<div>
帐号: <input type="text" name="userName" /><br />
密码 :<input type="password" name="pass" /><br />
记住我: <input type="checkbox" value="rem" name="sele1" /><br />
<input type="submit" value=" 登录 " />
</div>
</form>
</body> if (Request.Cookies["userName"] == null && Request.Cookies["passWord"] == null) //判断是否存在cookie,如果存在表示上次选择了记住我
{
if (Request.Form["userName"] != null && Request.Form["pass"] != null)
{
String userName = Request.Form["userName"];
String userPassWord = Request.Form["pass"];
if (userName == "admin" && userPassWord == "")
{
if (Request.Form["sele1"] != null)
{
HttpCookie cookieUserName = new HttpCookie("userName", userName); //创建帐号的cookie实例
HttpCookie cookiePassWord = new HttpCookie("passWord", userPassWord);
cookieUserName.Expires = DateTime.Now.AddDays(); //设置帐号cookie的过期时间,当前时间算往后推两天
cookiePassWord.Expires = new DateTime(, , ); //设置密码cookie的过期时间,过期时间为2012年5月27日
Response.Cookies.Add(cookieUserName); //将创建的cookieUserName文件输入到浏览器端
Response.Cookies.Add(cookiePassWord);
Response.Redirect("Index.aspx"); //跳转到你想要的页面
}
else
{
Response.Redirect("Index.aspx");//即便不记住密码也要跳转
}
} }
}
else
{
Response.Redirect("Index.aspx");//如果记住密码,第二次登录将直接进入Index.aspx页面
}
用户登录之asp.net cookie的写入、读取与操作的更多相关文章
- 关于django用户登录认证中的cookie和session
最近弄django的时候在用户登录这一块遇到了困难,网上的资料也都不完整或者存在缺陷. 写这篇文章的主要目的是对一些刚学django的新手朋友提供一些帮助.前提是你对django中的session和c ...
- 关于用户登录状态存session,cookie还是数据库或者memcache的优劣
session中保存登陆状态: 优:整个应用可以从session中获取用户信息,并且查询时很方便.在session中保存用户信息是不可缺少的(web应用中) 缺:session中不宜保存大量信息,会增 ...
- vue 用户登录 路由拦截 vuex cookie
功能: // 页面跳转后发送ajax请求给后端 请求详细信息 //点击课程推荐跳转到推荐课程详细 // 页面刚加载立即执行函数 = mounted <template> <div&g ...
- 用户登录之记住密码 Cookie实现
- Asp.Net Core 项目实战之权限管理系统(5) 用户登录
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Cookie (设置与读取、超时设置、指定路径、显示用户上次登录时间)
Cooike简介 Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的 ...
- .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息
在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...
- Asp.Net使用加密cookie代替session验证用户登录状态 源码分享
首先 session 和 cache 拥有各自的优势而存在. 他们的优劣就不在这里讨论了. 本实例仅存储用户id于用户名,对于多级权限的架构,可以自行修改增加权限字段 本实例采用vs2010编写 ...
- IE10、IE11 ASP.Net 网站无法写入Cookie 问题
在做项目的时候遇上一个奇怪的问题,这个项目是用前端DWZ框架+MVC框架做的,在IE10和IE11上, 用户登录之后,操作界面中的任何操作,都无法操作,抛出异常,经过查找分析发现, 只有在IE10和I ...
随机推荐
- DNS服务——域名解析容错
介绍 DNS服务至关重要,你我每天访问网站不可能是记忆IP地址.因此DNS服务器的可靠性至关重要.下面介绍DNS服务器容错机制,看图 为了防止DNS服务器故障不再提供服务,引入辅助DNS服务器.辅助D ...
- C++——overloading
参考 C++——overloading principle analysis operator overloading C语言中,对一个东西进行操作一定要涉及到一个函数,对于自定义类型,为了实现其四则 ...
- Codeforces #496 E1. Median on Segments (Permutations Edition)
http://codeforces.com/contest/1005/problem/E1 题目 https://blog.csdn.net/haipai1998/article/details/80 ...
- hihocoder 1931 最短管道距离
描述 在一张2D地图上有N座城市,坐标依次是(X1, Y1), (X2, Y2), ... (XN, YN). 现在H国要修建一条平行于X轴的天然气主管道.这条管道非常长,可以认为是一条平行于X轴的直 ...
- 学习php doctrine
了解symfony3.3.PHP FIG.Doctrine: 了解angular2.material2:. 熟悉git:了解开源项目:openstack docker ceph等: NoSQL(HBa ...
- 男上加男团队对 修!咻咻! 团队,云打印 团队的Beta产品测试报告
男上加男团队对 修!咻咻! 团队的Beta产品测试报告 男上加男团队对云打印 团队的Beta产品测试报告 6.2 1.57分补充 睡觉前看终于看到发布的在线版本 重新测试了一下 卡在注册这关 无法收到 ...
- P2P system: GNUTELLA
P2P system: GNUTELLA GNUTELLA是第一个经论证的分布式的peer-to-peer system. Napster的一个重大问题是涉及到间接侵权,所以GNUTELLA消除the ...
- Jmeter+Jenkins持续集成(一、环境准备)
1.安装JDK (1)下载JDK,jdk8u181-x64.dmg 并进行安装 (2)配置环境变量.打开配置文件 open -e .bash_profile.按照自己的安装路径进行配置. JAVA_H ...
- redis 发展史 应用场景
引言 在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用, 原因是因为那时候Web站点基本上访问和并发不高.交互也较少. 而在后来,随着访问量的提升,使用关系型数据库的Web站点多多少 ...
- vue router.beforeEach(),详解
outer.beforeEach()一般用来做一些进入页面的限制. 比如没有登录, 就不能进入某些页面,只有登录了之后才有权限查看某些页面...说白了就是路由拦截.第一步 规定进入路由需不需要权限 @ ...