当前位置: 首页 > news >正文

北京西城区建设网站酒店软装设计公司官网

北京西城区建设网站,酒店软装设计公司官网,建立网站需要投入的成本,电商网站开发要多少钱一、筛选器类和Cookie实现路由 需解决的问题#xff1a; 网站登录往往需要用户名密码验证#xff0c;为避免重复验证#xff0c;一般采用Cookie 、Session等技术来保持用户的登录状态#xff1a; Session是在服务端保存的一个数据结构#xff0c;用来跟踪用户的状态 网站登录往往需要用户名密码验证为避免重复验证一般采用Cookie 、Session等技术来保持用户的登录状态 Session是在服务端保存的一个数据结构用来跟踪用户的状态这个数据可以保存在集群、数据库、文件中 Cookie是客户端保存用户信息的一种机制用来记录用户的一些信息也是实现Session的一种方式 从上解释可见Cookie 比 Session 更简单也不占用服务器的资源。 ActionFilterAttribute    Cookie 可以解决 以上问题 首先在工程中新建一个空目录名称自取 然后在目录中添加一个类 UserCookie  负责对用户登录信息的Cookie相应操作 using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Web; namespace ManageSysetm.Tools {public class UserCookie{public static T JsonDeserializeT(string jsonString){return JsonConvert.DeserializeObjectT(jsonString);}public static string ToJson(object obj){JsonSerializerSettings settings new JsonSerializerSettings();settings.ReferenceLoopHandling ReferenceLoopHandling.Ignore;return JsonConvert.SerializeObject(obj);}public static void WriteCookie(Maticsoft.Model.user mod){ FormsAuthentication.SetAuthCookie(ToJson(mod), true, FormsAuthentication.FormsCookiePath);//把用户对象保存在票据里 FormsAuthenticationTicket Ticket new FormsAuthenticationTicket(1, mod.userName, DateTime.Now, DateTime.Now.AddTicks(FormsAuthentication.Timeout.Ticks), false, ToJson(mod));//加密票据string hashTicket FormsAuthentication.Encrypt(Ticket);HttpCookie userCookie new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket);userCookie.Expires.AddHours(3);System.Web.HttpContext.Current.Response.Cookies.Add(userCookie);}public static Maticsoft.Model.user ReadCookie(){try{var cookie System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName]; //的到Cookieif (cookie null)return null;var ticket FormsAuthentication.Decrypt(cookie.Value); //解密票据string str ticket.UserData;return JsonDeserializeMaticsoft.Model.user(str);}catch{return null;}}public static void ReMoveCookie(){FormsAuthentication.SignOut();}} } 说明 1、添加了序列化的Json处理函数关于JSON可以参考前面的介绍 2、读写Cookie对输入的Model 序列化 (ToJson) 成字符串然后写入票据读的过程正好相反 再添加筛选器类IsLogin  继承于 ActionFilterAttribute using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc;namespace ManageSysetm.Tools {public class IsLogin : ActionFilterAttribute{//当方法执行时 public override void OnActionExecuting(ActionExecutingContext filterContext){try{ var isLogin UserCookie.ReadCookie();if (isLogin null){filterContext.Result new RedirectResult(/Home/login); }}catch{filterContext.Result new RedirectResult(/Home/login); }base.OnActionExecuting(filterContext);}//当方法执行完毕public override void OnActionExecuted(ActionExecutedContext filterContext){base.OnActionExecuted(filterContext);}} } 逻辑比较简单判断是否存在Cookie不存在的时候或者异常时跳转到登录页面否则正常通过。 二、使用 可以用“帽子”的方法来实现筛选 在默认的路由 Index上添加 筛选器 IsLogin 则在该Action执行前先进行筛选器判断取Cookie没有则返回登录页面否则正常进入Index 。 拓展 既然可以添加 筛选器 IsLogin 那么是否也可以添加  筛选器 IsAdmin (名称自取) ? ——这样可以根据不同用户角色筛选进入不同的页面。 当然是可以的解决思路无非就是加入用户Cookie中身份的判断逻辑 三、补充 数据表中用明文记录用户的密码是不可取的一旦数据表被曝光后用户的角色就能够被人使用。比如数据库管理人员可以利用数据表中的用户名和密码直接进行用户角色登录 解决方法是加密贴几个实用函数可以放入某个工具类中 private static string Key{get { return )O[NB]6,YF}efcaj{oESb9d8Ze9M; }}private static string IV{get { return L\~f4,Ir)b$pkf; }}public static string Encrypt(string pwd)//加密{byte[] bKey Encoding.UTF8.GetBytes(Key);byte[] bIV Encoding.UTF8.GetBytes(IV);byte[] byteArray Encoding.UTF8.GetBytes(pwd);//将字符串转换为字节序列string encrypt null;Rijndael aes Rijndael.Create();using (MemoryStream mStream new MemoryStream())//创建内存流对象{using (CryptoStream cStream new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))//创建加密流对象{cStream.Write(byteArray, 0, byteArray.Length);//向加密流中写入字节序列cStream.FlushFinalBlock();//将数据压入基础流,用缓冲区的当前状态更新基础数据源或储存库随后清除缓冲区。encrypt Convert.ToBase64String(mStream.ToArray());//从内存流中获取字节序列并返回加密后的字符串}}aes.Clear();return encrypt;}public static string AESDecrypt(string encryptStr){byte[] bKey Encoding.UTF8.GetBytes(Key);byte[] bIV Encoding.UTF8.GetBytes(IV);byte[] byteArray Convert.FromBase64String(encryptStr);string decrypt null;Rijndael aes Rijndael.Create();using (MemoryStream mStream new MemoryStream()){using (CryptoStream cStream new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write)){cStream.Write(byteArray, 0, byteArray.Length);cStream.FlushFinalBlock();decrypt Encoding.UTF8.GetString(mStream.ToArray());}}aes.Clear();return decrypt;} 使用方法比较简单string s UserCookie.Encrypt(password);  //对密码加密处理 加密字符串由此解决用户表密码信息的保护 PS 验证的时候不需要解密用户输入的密码加密 与 数据表中字段匹配一下即可。
http://www.hkea.cn/news/14363966/

相关文章:

  • 劳动人事争议仲裁网站建设wordpress vanilla
  • 能打开各种网站的浏览器app网站开发的成果
  • 网站 各种 备案wordpress百科插件
  • 利用模板如何制作网站wordpress伪静态cdn
  • 网页设计与网站建设在线考试和女的做那个视频网站
  • 招聘网站开发源码易语言做网站登陆
  • 网站板块策划中国建设银行云南官网站纪念币
  • 服装网站设计方案如何注册一个自己的网址
  • 买服务器做网站主机长春做网站推广的公司
  • 微网站栏目图标山东省建设执业资格注册中心网站
  • 只想怎样建设自己的销售网站网站都是什么软件做的
  • 网站开发实践实验教程wordpress 文章内目录
  • 手机销售网站的设计与实现网站美食建设图片
  • 贵司不断优化网站建设网站制作哪些分类
  • 沧州网站建设优化杭州竞彩网站开发
  • 网站建设类有哪些职位佛山 网站关键词优化
  • 门户网站建设招标网站建设968
  • 怎么把网站放到空间吗wordpress 开放插件
  • 软件开发 网站开发区别中国制造加工网官网
  • 公司网站制作仿站株洲企业网站制作
  • 国外有哪些做deal的网站宿松县住房和城乡建设局网站
  • 如何做网站的导航栏nginx 网站建设
  • 电商自建站上海市工程质量建设管理协会网站
  • 做网站的那些个人工作室西部数码 wordpress
  • 潍坊网站制作如何布置网站
  • 哪个网站查食品建设好有女人和马做网站吗
  • 做行程好的网站广州住建网站
  • 旅游网站开发与建设论文南京建设工程招聘信息网站
  • 学习网站建设要报班吗php的网站模板
  • 嘉兴cms建站模板上海做网站定制