SessionID可以保存在数据库中嘛?
要保存肯定是可以的,但是在用户访问基数很大的情况下 可以吗?(Session无法长期连接,否则消耗服务器资源;如果不长期连接 那保存数据库的意义又何在?)保存在数据库中有何意义?
.NET中,把SESSION配置为使用SQL数据库而不是cokkie会更好。
能给我讲一下嘛?
两个问题:
1、Session配置数据库的好处、坏处?配置在Cooke的好处和坏处?
2、如何实现Session在数据库中的配置?保存SessionID在数据库嘛?
@堂堂88:
1、使用数据库的好处:解决浏览器不支持COOKIE,此时SESSION无效(比如登录的结果成功了,却还是要再登录),坏处,自然是增加了服务器的负担(需要SQL数据库的支持)
2、配置为数据库后,系统默认情况下会在本机创建一个数据库,当然也可以修改。这个时候只是把SESSION信息存储在数据库而已(当然也包括SessionID),但是,当Session过期后,系统会自动删除这条记录。
具体的配置,你可以查看下WebConfig的相关文档。
@笨笨蜗牛: 谢谢你的答案。不过还是有个疑问。
Session不可能长期连接,这样就会反复的读写数据库,这不也增加了数据库服务器的负担嘛?
还有 Session存入数据库和直接从数据库读取登录信息 那么的差别到底有多大?或许我现在无法体验出这种差别吧?
@堂堂88: 用户登录后,是要把登录信息存储在数据库(登录状态与日志),一般来说,不会把登录的会话状态信息人为的存储在数据库中(使用系统存储SESSION到数据库例外,这个也不算人为的)。
纵观目前的所有站点,虽然.NET支持把SESSION存储在数据库中,但这样操作的站点并不多,看来,这个实现方案存在很多不足或还没得到大家都认可。
至于JSP系统是否也支持把SESSION存储在数据库中,且 使用状况如何,因为我从没接触过JSP,就更是无从说起了。
@堂堂88:
总的来说,把SESSIONID存储在数据库是没有意义的 。
除非你要设置你的系统中任何一个账户只能在一个会话中登录存在(新的 登录覆盖旧的登录)。
@笨笨蜗牛: 多谢蜗牛的讲解 我想我大概明白是怎么会事了。谢谢
保存在数据库最安全。
拿登录来说,如果把登录信息保存在数据库,我可以理解(当然这还不如不保存,直接查询用户数据登录。耗能都差不多、、、、)。
因为Session无法长期连接,保存SessionID到数据库有什么用呢?Session丢失之后,SessionID也就没用了嘛不是?