FormsAuthenticationTicket session、cookies为3种常用的验证用户登陆的方法,下边说一下他们的区别:
1)FormsAuthenticationTicket 是。net framework2.0及其以上版本中固有的验证机制,其本质是把用户的cookies信息加密存储在客户端,这样可以部分降低服务器端的内存消耗,不必像session那样把用户信息存储在服务端内存当中,而其数据的安全性则有微软来保证,详细用法请参考msdn官方文档:
http://msdn.microsoft.com/zh-cn/library/system.web.security.formsauthenticationticket_members(v=vs.80).aspx。
2)session 使用session存储用户信息使用发放简便,可在含有http上下文的任意位置添加session对象,并且可以把对象赋予session,因为session为object类型,可被任意对象赋值,session本质上其实是在服务器端内存中开辟一段存储区用于存放session的值,而在客服端(浏览器)留下一个cookies标记,该标记为服务器端的session的一个id,不是session对象的具体内容,这样相对于数据安全来说相对安全,但也只是相对,这样做会对服务器端内存有所消耗,但影响应该不是很大,除非你的网站同时在线人数很多。不过session机制还是有一些缺陷,iis
中由于有进程回收机制,系统繁忙的话Session会丢失,
IIS重启也会造成Session丢失。这样用户就要重新登录或者重新添加购物车、验证码等放到Session中的信息。所以微软才推荐使用FormsAuthenticationTicket票据方式来验证用户登陆。
3)cookies 以上2种方式都间接的使用了cookies,使用cookies来验证用户身份时,记得最好加密一下,除非你设定cookies的过期的时间,不然还是很容易被黑客所利用,造成不必要的用户信息泄露。但cookies存储数据的大小有限制,平均下来不超过4K,有的浏览器支撑比较高,但那也只是有的不是所有浏览器都是,咱们只能取最小值。
以上只是本人的拙见,不对之处希望大家给予指教,共同进步
本文转自 tongling_zzu 51CTO博客,原文链接:http://blog.51cto.com/tongling/1159266