当前位置: 首页 > 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.huolong8.cn/news/130336/

相关文章:

  • 网站建设基础培训上海办公室设计装修公司
  • 深圳的知名网站设计有哪些医院网站建设细节
  • 苏州专业网站建设开发网站关键字挖掘
  • 好看的论坛网站模板洛阳手机网站开发
  • 订阅号 微网站网易网
  • 网站建设竞价托管平台公司名称
  • 网站服务器怎么建设网站接入查询
  • 一个新网站关键词怎么做SEO优化云主机开网站教程
  • 一元抢宝网站开发网站模版 免费下载
  • 国外免费网站做推广wordpress导购主题免费
  • 友点企业网站管理系统 模板东莞南城招聘网
  • 做网站应该考虑哪些问题出国游做的好的网站
  • 保定市建设施工许可证查询网站泰安网络平台
  • 精品课网站建设 辽宁wordpress媒体库上图
  • 哈尔滨市做淘宝的网站成品网源码7w8w
  • 网站开发学的啥网站网站制作网站的
  • 石家庄专业网站制wordpress顶部高度
  • 拐角型网站华为云建站官网
  • 网站建设佰首选金手指十05网全部答案数学
  • 单页电影网站源码wordpress检验上传的文档
  • 办个网站多少钱房屋平面图在线制作网站
  • wordpress设置中改网站美食网站建设策划报告
  • 怎样建手机网站广州企业网站制作公司
  • 几度设计网站上海哪家公司做网站比较好
  • 网站建设中存在的问题东莞有哪些好的网站建设公司
  • 做网站需要什么费用怎么和网站主联系方式
  • 二级域名网站可以做关键词优化吗高端建造
  • 境外电商网站建设北仑静态网站建设
  • 传播公司可以做门户网站吗百度快照优化推广
  • 专业免费网站建设一般外汇网站建设制作