客户端Cookie用户数据验证
时间:2019-06-18
本文章向大家介绍客户端Cookie用户数据验证,主要包括客户端Cookie用户数据验证使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
IIS发布网站针对客户端用户身份认证采用Cookie核心技术的总结
登录获得加密令牌
/// <summary> /// 获得加密令牌 /// </summary> /// <returns></returns> public static string EncryptToken<T>(T userData, int expireMinutes) where T : class { string strUserData = XmlUtil.ToXml(userData); FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "HYFormsToken", DateTime.Now, DateTime.Now.AddMinutes(expireMinutes), true, strUserData); return FormsAuthentication.Encrypt(ticket); }
Web.Config配置增加authentication属性
<system.web> <authentication mode="Forms" /> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" maxRequestLength="40960" /> <sessionState timeout="120"></sessionState> <globalization culture="zh-CN" fileEncoding="utf-8" responseHeaderEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" uiCulture="zh-CN" /> </system.web>
写入客户端Cookie
/// <summary> /// 登录 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="userData"></param> /// <param name="expireMinutes"></param> /// <returns></returns> public static string DoLogin<T>(T userData, int expireMinutes) where T : class { string token = EncryptToken(userData, expireMinutes); HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName); cookie.Path = "/"; cookie.Expires = DateTime.Now.AddMinutes(expireMinutes); cookie.Value = token; HttpContext.Current.Response.Cookies.Add(cookie); return token; }
通用XML方法
将验证用户对象统计XML序列化进行封装
/// <summary> /// 将对象序列化为XML字符串 /// </summary> /// <param name="obj">对象</param> /// <returns>对象的xml字符串</returns> public static string ToXml(object obj) { if (obj == null) { return null; } string xml; using (var stream = new MemoryStream()) { var ser = new XmlSerializer(obj.GetType()); ser.Serialize(stream, obj); var len = (int)stream.Position; var bufuer = stream.GetBuffer(); xml = Encoding.UTF8.GetString(bufuer, 0, len); } return xml; } /// <summary> /// 从XML字符串反序列化类 /// </summary> /// <typeparam name="T">目标类型</typeparam> /// <param name="xmlStr">对象的xml字符串</param> /// <returns>类型对象</returns> public static T FromXml<T>(string xmlStr) { Type type = typeof(T); return (T)new XmlSerializer(type).Deserialize(new StringReader(xmlStr)); }
登出时清除Cookie令牌
/// <summary> /// 登出 /// </summary> /// <returns></returns> public static bool Abandon() { FormsAuthentication.SignOut(); HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName); cookie.Value = null; HttpContext.Current.Response.Cookies.Add(cookie); return true; }
原文地址:https://www.cnblogs.com/fqzhong2007/p/11045277.html
- 虚拟化平台cloudstack(8)——从UI开始
- 使用oracle的大数据工具ODCH访问HDFS数据文件
- UWP基础教程 - XAML开篇
- UWP基础教程 - XAML依赖属性和附加属性
- GO语言学习:动态Web
- Golang 连接mssql sql server
- UWP基础教程 - XAML对象元素和属性
- UWP基础教程 - 禁用&开启截取应用屏幕
- Android开发中应该避免的内存泄露
- UWP基础教程 - XAML资源
- Golang笔记——并发
- UWP基础教程 - XAML标记扩展
- UWP基础教程 - RelativePanel
- UWP基础教程 - AuotmationProperties.Name
- 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 数组属性和方法
- Laravel 错误提示本地化的实现
- Laravel框架DB facade数据库操作详解
- laravel 解决强制跳转 https的问题
- 在laravel中实现将查询的对象转换为多维数组的函数
- 在Laravel 中实现是否关注的示例
- Laravel框架查询构造器常见用法总结
- laravel 解决多库下的DB::transaction()事务失效问题
- laravel 实现上传图片到本地和前台访问示例
- laravel框架模型中非静态方法也能静态调用的原理分析
- Laravel 5.2 文档 数据库 —— 起步介绍
- laravel csrf排除路由,禁止,关闭指定路由的例子
- thinkphp框架类库扩展操作示例
- Laravel ORM 数据model操作教程
- Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
- laravel 解决Eloquent ORM的save方法无法插入数据的问题