C# TOKEN的保存与验证
2016-05-17 16:32
274 查看
Token主要为了防止非本页数据的提交,防止重复提交。
调用:
/** * * 保存TOKEN信息 * */ public void saveToken() { //此处生成md5串 string md5 = getMD5(token_id); this.ViewData[Constant.TOKEN_ID_FORM] = "<input type=\"hidden\" name=\"" + Constant.TOKEN_ID_FORM + "\" value=\"" + md5 + "\">"; this.Session[Constant.TOKEN_ID_FORM] = md5; } /** * * 验证FORM 内的TOKEN信息 是否与SESSION的信息一致 * */ public bool isValidateToken() { string md5 = this.Session[Constant.TOKEN_ID_FORM] as string; string md5_form = this.read(Constant.TOKEN_ID_FORM); if (string.IsNullOrEmpty(md5)) { return false; } else { if (md5.Equals(md5_form)) { return true; } else { return false; } } } /** * * 对数据进行加密,生成32位的16进制字符串 * */ public static string getMD5(string strSource) { string strResult = ""; try { //Create System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create(); //注意编码UTF8、UTF7、Unicode等的选择 byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource)); //字节类型的数组转换为字符串 for (int i = 0; i < bytResult.Length; i++) { //16进制转换 string temps = bytResult[i].ToString("x"); if (temps.Length == 1) { temps = "0" + temps; } strResult = strResult + temps; } } catch (Exception ex) { logger.Error("MD5加密算法错误!错误信息:" + ex.Message); } return strResult.Substring(8,16); }
调用:
//跳转的前一个页面,生成Token this.saveToken(); //保存页面 验证Token if (this.isValidateToken()) { //重新设置token this.saveToken(); }
相关文章推荐
- C#常用工具类——Excel操作类
- 七牛C#语言hash或者etag值计算代码
- C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性
- csharp中DateTime总结-转
- C# 判断 当前设备的IP地址、默认网关、子网掩码在不在同一网段内
- C#验证子网掩码的正确性
- 【C#】给无窗口的进程发送消息
- C#三种字符串拼接方法性能浅析
- 一个牧场目前一共有20头刚出生的羊,母羊、公羊各一半。假如母羊5岁时后每年生一胎(母羊,公羊各一半)。羊活到10岁后死亡。请问20年后这个牧场有多少只羊? 请用C#写出算法。
- C#清除WebBrowser中Cookie缓存的方法
- 第1章 C#概述
- WPF依赖属性
- C#日期时间格式化
- C#中路由事件的使用
- 使用C#解析XMIND文件格式
- c#之xml
- c#解压压缩文件和文件夹
- 用C#一步步写串口通信
- c#泛型使用详解:泛型特点、泛型继承、泛型接口、泛型委托
- C# 爬虫 100个明星贴吧