分享一下cookies操作(增、删、改、查)小经验
前段时间在做一个 SSO(Single Sign On),用cookies去存Token
网站保存用户信息这类都用的cookies
以前觉得cookies操作无非就那么几种,但是“杯具事件”还是很多的
下面分享一下对cookies的简单操作
-----------------------------------------------------操作-----------------------------------------------------------
1.添加cookies(用cookies方式去做sso,用户信息保存,修改都会依赖cookies)
#region##添加cookeis
///<summary>
/// 添加cookeis
///</summary>
public void AddCookies()
{
HttpCookie cookies = new HttpCookie("Porschev");
cookies["name"] = "Zhong Wei";
cookies["sex"] = "1";
cookies.Expires = DateTime.Now.AddMinutes(20);
Response.Cookies.Add(cookies);
}
#endregion
添加cookies一般不会有人出错的。。。记得添加Expires就行
2.修改cookies( 在程序中难免会操作,对用户信息的修改,更新数据库后,也会修改cookies,为了修改后的显示)
方法一:
#region##修改cookies
///<summary>
/// 修改cookies
///</summary>
public void ModCookies()
{
HttpCookie cookies = Request.Cookies["Porschev"];
cookies["name"] = "wilson Z";
}
#endregion
新建个测式页。。再取cookies中的name,结果:wilson Z;
这是这次项目中遇到的“杯具”事件之一,当这样修改cookies时,在更新方法中再取这个名为Porschev的cookies,
name的值还为Zhong Wei而非wilson Z,页面显示也不对(己排除页面缓存原因,更新也确实没有成功)
修改方法一:
#region##修改cookies
///<summary>
/// 修改cookies
///</summary>
public void ModCookies()
{
HttpCookie cookies = Request.Cookies["Porschev"];
cookies["name"] = "wilson Z";
//加上下面一句
Response.Cookies["Porschev"].Expires = DateTime.Now.AddMinutes(-1);
}
#endregion
再次测式,结果正确,取出name的值为:wilson Z,页面显示也正确
自己理解:得让以前存入过期时间为20min的cookies失效
3.得到cookies (这个最简单,为求方法完整,还是写上吧)
#region##得到cookies
///<summary>
/// 得到cookies
///</summary>
public void GetCookies()
{
HttpCookie cookies = Request.Cookies["Porschev"];
string name = cookies["name"]; //通过key取出对应value,多key同理取
}
#endregion
4.删除cookies (删除cookies网上有很多方法,但是删除不是都能管用)
方法一:(最常用的一个删除cookies方法)
#region##删除cookies
///<summary>
/// 删除cookies
///</summary>
public void DelCookeis()
{
if (Request.Cookies["Porschev"] != null)
{
HttpCookie cookies = new HttpCookie("Porschev");
cookies.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(cookies);
}
}
#endregion
在项目中测式,删除部分cookies失败,很无语,于是换一种方法
#region##删除cookies
///<summary>
/// 删除cookies
///</summary>
public void DelCookeis()
{
foreach (string cookiename in Request.Cookies.AllKeys)
{
HttpCookie cookies = Request.Cookies[cookiename];
if (cookies != null)
{
cookies.Expires = DateTime.Today.AddDays(-1);
Response.Cookies.Add(cookies);
Request.Cookies.Remove(cookiename);
}
}
}
#endregion
测式:删除成功
自己理解:方法一只能删除提当前Response中的cookies,不对完成删除掉客端的cookies,用遍历cookies的方式可以
方法一定对,己经过项目实际验证,观点不一定正确,如理解有误,请各位指正!!
- Android 禁止Viewpager左右滑动功能
- 高通Audio中ASOC的machine驱动
- 《Redis设计与实现》读书笔记(三十五) ——Redis 二进制位数组及SWAR汉明重量算法
- Android TabWidget底部显示
- 《Redis设计与实现》读书笔记(三十六) ——Redis 慢查询日志实现
- 概率学中的随机变量与分布
- 神马?SQL竟然可以解脑筋急转弯的题目?
- android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
- 基于SpringBoot的任务管理平台v1.0正式发布
- 大数据系统的Lambda架构
- AKKA中的事件流
- Java初涉感悟
- Android 6.0 Permission权限与安全机制
- SpringBoot工作机制
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 爬虫进阶篇-利用beautifulsoup库爬取网页文章内容实战演示
- Windows 技术篇-cmd强制关闭端口、解除端口占用方法,cmd查询端口相关的进程pid并杀死进程实例演示
- PL/SQL 数据库连接工具的下载、安装与使用实例演示
- JavaScript 技术篇-JSON字符串在线快速格式化查看实例演示,json.cn网址格式化json字符串
- Python 技术篇-含中文编码的代码运行方法,(unicode error) ‘utf-8‘ codec can‘t decode问题原因及解决方法
- Spring Boot Actuators
- 用图机器学习探索 A 股个股相关性变化
- Python 技术篇-连接oracle数据库并执行sql语句实例演示,python连接oracle数据库oci详细配置方法
- MySQL 技术篇-mysql数据库的安装、配置与使用实例演示
- JavaScript 技术篇-js代码获取当前操作系统信息、浏览器版本信息实例演示,windows NT版本对照表
- Oracle 数据库impdp导入数据库版本和dmp数据库文件版本不匹配问题解决方法,ORA-39142版本号不兼容、ORA-39000转储文件说明错误解决方法
- 实践总结:基于Kbone使用React同构开发小程序
- BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示
- Python+Selenium 自动化-指定chrome驱动运行selenium实例演示,运行指定位置下的浏览器驱动
- Linux 命令查找指定文件夹下符合查询条件的文件和文件夹实例演示