为了账号安全,请及时绑定邮箱和手机立即绑定

session的替代方案,大家来看下

session的替代方案,大家来看下

茅侃侃 2018-09-12 05:06:30
面临的问题:1.由于现代浏览器的标签页共享session,如果需要同时在单个浏览器中允许多个用户登录,会出现很多棘手的问题;2.另外项目中出现过在标准浏览器的iframe页中访问ashx文件时session为空的问题;3.再者现在使用的session是基于cookie,你不能100%的保证session的内容不会超过大小.所以现在想用cache来代替session,因为入口点只有一个,可以在登录时生成一个GUID的KEY,然后追加到URL中,再写一个方法方便存储和获取用户信息到Cache[guid]中,这样上面的几个问题都可以很方便的解决。另外如果系统随着客户的需求出现变更,比如多个用户在一个浏览器中同时登录的是与否,或者多浏览器共用登录信息的是与否,这些通过加入自定义配置结合cache和cookie都可以很方便的解决。另外结合cache的callback还可以解决非inproc方式的session没有sessionEnd事件。不好的一点就是页面地址都要附加一个url的querystring,不是很美观。不过现在系统决定用iframe代替masterpage所以这个应该不算什么大问题。现在主要觉得使用cache特别的方便自定义配置,session虽然方式很多,但是每一种始终收到各种约束。大家来说说这个方法有什么明显的缺点,比如效率/性能/以及开发者易用性上。
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

我之前做了个项目、比你说的情况还要严格些、是要求限制一台电脑只能同时登录一个用户,不限制浏览器,我也是采用 自定义缓存+数据库 的方式来处理,session 限制太多,不能满足要求。

查看完整回答
反对 回复 2018-09-25
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

你的想法已经不错了,根据你网站的定位,大部分用户访问量比较大的网站,都选择cookie以减小对服务器的压力。

session和cache都是保存在服务器内存中的,这样如果访问量很大,或者IIS出问题,都有可能导致登陆信息或其它信息丢失。用户都已经习惯了在浏览器中保存用户登陆状态,那怕是个标识,但是你服务器那边要做双重验证,防止欺骗登陆。

结合使用cookie和缓存,或者数据库。

如果管理型系统,选择session也不错,出问题出有解决的办法,也可以把状态保持到数据库。


查看完整回答
反对 回复 2018-09-25
  • 2 回答
  • 0 关注
  • 1384 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信