ASP.NET Cookie的登录验证
System.Web.Security.FormsAuthentication.SetAuthCookie(UserName.Text,false);//登录...
//将用户名写入cookies
Response.Cookies["RememberMe"].Value = HttpUtility.UrlEncode(UserName.Text, System.Text.Encoding.GetEncoding("gb2312"));
Response.Cookies["RememberMe"].Expires = DateTime.Now.AddMonths(1);
UserName.Text = HttpUtility.UrlDecode(Request.Cookies["RememberMe"].Value, System.Text.Encoding.GetEncoding("gb2312"));
是没有效果。原来调用Cookies集合的 Remove 方法可从服务器端的集合中移除 Cookie,使 Cookie
不会被发送至客户端。但是,如果客户端已存在 Cookie,则该方法无法从客户端将其移除。 解决方法是,将 Cookie
的到期日期设置为过去的日期,让用户的浏览器来删除 Cookie:
if (Response.Cookies["RememberMe"] != null) Response.Cookies["RememberMe"].Expires = DateTime.Now.AddDays(-1);//删除
System.Web.Security.FormsAuthentication.SetAuthCookie(UserName.Text,false);//登录,一定要先验证 if (RememberMe.Checked)//再写入cookie
{
if (Request.Cookies["RememberMe"] == null)
{
Response.Cookies["RememberMe"].Value = HttpUtility.UrlEncode(UserName.Text, System.Text.Encoding.GetEncoding("gb2312"));
Response.Cookies["RememberMe"].Expires = DateTime.Now.AddMonths(1);
}
}
else
{
if (Response.Cookies["RememberMe"] != null) Response.Cookies["RememberMe"].Expires = DateTime.Now.AddDays(-1);//删除
}
if (!IsPostBack)
{
if (Request.Cookies["RememberMe"] != null)
{
UserName.Text = HttpUtility.UrlDecode(Request.Cookies["RememberMe"].Value, System.Text.Encoding.GetEncoding("gb2312"));
RememberMe.Checked = true;
}
}
总结一下:
1.写一个与form验证相同用户名的值到cookies中,应该先验证后写cookies,否则会产生冲突,导致验证不能通过。
2.删除cookie的正确方法是设置已有cookies的日期为早于当前时间的日期,使用Cookies.Remove是没有效果的。
3.创建浏览器进程的cookies,不要设置Expires属性就行了,这样关闭浏览器就会自动被清空
4.cookies值是中文的时候最好用gb2312编码一下,这样可以避免产生乱码。
ASP.NET Cookie的登录验证的更多相关文章
- 基于session和cookie的登录验证(CBV模式)
基于session和cookie的登录验证(CBV模式) urls.py """cookie_session URL Configuration The `urlpatt ...
- Jmeter上传文件、cookie、登录验证
2.11选择http请求 3.0 cookie 域:十九服务器ip或者域名 路径就是接口路径 登录验证:
- ASP.NET MVC4 Forms 登录验证
Web.config配置: 在<system.web>节下: <authentication mode="Forms"> <forms loginUr ...
- asp.net MVC 通用登录验证模块
用法: 还是希望读者把源码看懂,即可运用自如.重点是,为什么有个UserType!!! 登录用户信息: namespace MVCCommonAuth { [Serializable] public ...
- WCF 基于Cookie的登录验证回传问题的解决
参考资料: http://www.cnblogs.com/czcz1024/p/3333138.html http://megakemp.com/2009/02/06/managing-shared- ...
- cookie和session实现登录验证
回话技术,比如在做登录功能的时候,需要配合是用存储在客户端的cookie信息,以及存储在服务端的session来实现登录功能.在cookie中保存了用户的信息,特别是一个特殊的令牌信息,当用户拿着这个 ...
- 使用COOKIE实现登录 VS 使用SESSION实现登录
注:本文使用的代码基于PHP,其他语言逻辑同理. 一:使用COOKIE实现登录验证 使用cookie实现登录的方式,主要通过一些单向的加密信息进行验证.比如admin用户登录了之后,服务端生成一个co ...
- Asp.Net使用加密cookie代替session验证用户登录状态 源码分享
首先 session 和 cache 拥有各自的优势而存在. 他们的优劣就不在这里讨论了. 本实例仅存储用户id于用户名,对于多级权限的架构,可以自行修改增加权限字段 本实例采用vs2010编写 ...
- Asp.net MVC访问框架页中嵌套的iframe页面时,如果session或cookie过期,登录验证超时怎样自动跳转到登录页
一般登录验证的过滤器中,使用验证过滤器的Redirect方法,将请求重定向到指定的URL.但是如果我们要访问的页面是一个嵌套在框架页中的iframe页面时,这种重定向只会对iframe页面凑效,也就是 ...
随机推荐
- 安装asterisk以及asterisk-gui
asterisk的安装在ubuntu上自我感觉还是很方便的,虽然也会遇到一些小的问题.下面是本人遇到的 一些问题和解决方法. 1>在ubuntu10.04上安装aste ...
- react之redux增加删除数字
比如在页面中添加和删除‘222’ action.js export const ADD= 'ADD'; export const RED='RED'; export const add=(str)=& ...
- SqlSession
- P1115最大子段和
题目:https://www.luogu.org/problemnew/show/P1115 很简明的一道题: 这里用了递归分治,然而似乎还有更简单的做法(贪心). 代码如下: #include< ...
- Cannot resolve symbol 'log'
IntelliJ IDEA 写实体类时使用toString报错,报异常: 原因:缺少commons-lang3-3.8.1.jar包. 下载路径:http://commons.apache.org/p ...
- SSH框架搭建的时候遇到的问题
1.spring-web.jar包问题:使用user libaries方式,识别不到,于是出现了下面问题 java.lang.ClassNotFoundException: org.springfra ...
- 1.4-1.5 HBase部署及基本使用
一.部署 1.准备 ##先用Apache hadoop ##之前的cdh 服务器先全部停掉 ##解压HBASE [root@hadoop-senior hbase]# tar zxf hbase-0. ...
- 20个Flutter实例视频教程-第11节: 一个不简单的搜索条-2
博客地址: https://jspang.com/post/flutterDemo.html#toc-1b4 视频地址:https://www.bilibili.com/video/av3970929 ...
- C#中的explicit和implicit了解一下吧
今天在研究公司项目框架的时候看到了下面的用法,public static implicit operator JsonData(int data);.貌似很久没用过这种隐式转换的写法了,因此重新温习一 ...
- 聊聊Java里常用的并发集合
前言 在我们的程序开发过程中,如果涉及到多线程环境,那么对于集合框架的使用就必须更加谨慎了,因为大部分的集合类在不施加额外控制的情况下直接在并发环境中直接使用可能会出现数据不一致的问题,所以为了解决这 ...