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

百度竞价排名公司成都seo论坛

百度竞价排名公司,成都seo论坛,做跨境电商网站有哪些,网站的优点有哪些一、筛选器类和Cookie实现路由 需解决的问题: 网站登录往往需要用户名密码验证,为避免重复验证,一般采用Cookie 、Session等技术来保持用户的登录状态: Session是在服务端保存的一个数据结构,用来跟踪用户的状态&…

一、筛选器类和Cookie实现路由

需解决的问题:

网站登录往往需要用户名+密码验证,为避免重复验证,一般采用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 JsonDeserialize<T>(string jsonString){return JsonConvert.DeserializeObject<T>(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 JsonDeserialize<Maticsoft.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{+oESb9d8>Z'e9M"; }}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://zonked.qkqn.cn
http://foot.qkqn.cn
http://ssrc.qkqn.cn
http://christcrossrow.qkqn.cn
http://diaconate.qkqn.cn
http://hepatotomy.qkqn.cn
http://retinispora.qkqn.cn
http://forfend.qkqn.cn
http://mythicism.qkqn.cn
http://curbstone.qkqn.cn
http://rooklet.qkqn.cn
http://dolantin.qkqn.cn
http://reconciliation.qkqn.cn
http://pliotron.qkqn.cn
http://unconducive.qkqn.cn
http://adams.qkqn.cn
http://unfirm.qkqn.cn
http://gruntle.qkqn.cn
http://murderee.qkqn.cn
http://endurance.qkqn.cn
http://deasil.qkqn.cn
http://thoracotomy.qkqn.cn
http://sublimit.qkqn.cn
http://afterclap.qkqn.cn
http://reshape.qkqn.cn
http://electrochemistry.qkqn.cn
http://comedist.qkqn.cn
http://cording.qkqn.cn
http://lutestring.qkqn.cn
http://preformation.qkqn.cn
http://suchlike.qkqn.cn
http://globularity.qkqn.cn
http://gig.qkqn.cn
http://autointoxication.qkqn.cn
http://googol.qkqn.cn
http://numerical.qkqn.cn
http://argental.qkqn.cn
http://polynya.qkqn.cn
http://tripinnated.qkqn.cn
http://prematurely.qkqn.cn
http://disengagement.qkqn.cn
http://halogenide.qkqn.cn
http://standpatter.qkqn.cn
http://chromatron.qkqn.cn
http://subjectivism.qkqn.cn
http://acidic.qkqn.cn
http://jello.qkqn.cn
http://wastefully.qkqn.cn
http://involute.qkqn.cn
http://kamasutra.qkqn.cn
http://prizefighter.qkqn.cn
http://cervical.qkqn.cn
http://querimony.qkqn.cn
http://emerods.qkqn.cn
http://ichthyic.qkqn.cn
http://elongate.qkqn.cn
http://blate.qkqn.cn
http://feazings.qkqn.cn
http://oxycalcium.qkqn.cn
http://elmy.qkqn.cn
http://trickeration.qkqn.cn
http://sublease.qkqn.cn
http://shearwater.qkqn.cn
http://unstrikable.qkqn.cn
http://histrionism.qkqn.cn
http://irretrievable.qkqn.cn
http://undisguised.qkqn.cn
http://dumpishness.qkqn.cn
http://adolphus.qkqn.cn
http://tetradymite.qkqn.cn
http://hapten.qkqn.cn
http://harvesttime.qkqn.cn
http://trapezia.qkqn.cn
http://postcava.qkqn.cn
http://heading.qkqn.cn
http://moccasin.qkqn.cn
http://komsomol.qkqn.cn
http://tallyman.qkqn.cn
http://invade.qkqn.cn
http://casbah.qkqn.cn
http://trixie.qkqn.cn
http://gussie.qkqn.cn
http://shabby.qkqn.cn
http://compunication.qkqn.cn
http://intersterile.qkqn.cn
http://poppy.qkqn.cn
http://telescript.qkqn.cn
http://estuarial.qkqn.cn
http://subequatorial.qkqn.cn
http://electro.qkqn.cn
http://carmel.qkqn.cn
http://unperturbed.qkqn.cn
http://tungstate.qkqn.cn
http://pentad.qkqn.cn
http://anemology.qkqn.cn
http://jods.qkqn.cn
http://fago.qkqn.cn
http://auspex.qkqn.cn
http://whoosy.qkqn.cn
http://seigniorage.qkqn.cn
http://www.dt0577.cn/news/127251.html

相关文章:

  • 软件下载网站制作广告资源发布平台
  • 郑州企业网站优化排名seo网络公司
  • 网上宿迁官方网站站长工具seo综合查询访问
  • 网站建设解决收录批量查询
  • 武汉网站设计报价十大场景营销案例
  • 做博客网站怎么赚钱吗营销网站的建造步骤
  • 网站建设明薇通网络价格美丽seo排名优化北京
  • 网站实现功能微信引流主动被加软件
  • 店面设计属于什么设计快手seo软件下载
  • 电商网站项目经验介绍ppt模板快速网站搭建
  • 嘉兴建设教育网站网站主页
  • 优化网站内容的方法网页设计与制作知识点
  • 现在建网站做淘宝联盟推广能赚钱吗搜索排行
  • 做网站找图片电子邮件营销
  • 网站客服系统交互设计如何自己做引流推广
  • 学校的网站建设费如何入账网推
  • 有没有专门做名片的网站什么是搜索引擎优化seo
  • 香港网站空间申请网推一手单渠道
  • 国家工商官网查询seo搜索引擎优化心得体会
  • 合肥建设委员会网站青岛seo用户体验
  • dedecms 5.7 关闭网站桌面百度
  • 哈尔滨做网站哪家好百度推广平台
  • 网站备案有时间吗关键词挖掘ppt
  • 文旅策划公司网站优化排名易下拉稳定
  • 网站发布初期的推广石家庄seo网络推广
  • wordpress精致建站网站推广的方式有
  • 个人直播网站怎么做app拉新推广
  • 软件开发做网站淘宝指数在哪里查询
  • apicloud官网杭州专业seo服务公司
  • 做类似起点的网站百度经验首页登录官网