新项目,前台想学OSC不用Session,而是用Cookies来跟踪用户。所以项目默认没有开启Session。
但网站一些关键地方需要使用验证码。大家都知道,一般验证码服务端是用Session记录。
听说OSC登录启用验证码了,我就来看看,OSC验证码是不是没用Session,用错误密码登录了几次,发现原来还是用的。
那么问题来了:
1、项目中禁用Session除了可以解决Session引起的脚本阻塞问题、负载均衡中的Session问题,还有哪些好处与坏处?(我好权衡是否启用Session)
2、OSC Cookies中的 reg_key 作用是什么?
在生成和校验验证码的时候开启session呗 ###### 后端应该还是有数据放到缓存里面的,OSCHINA_SESSION 作为key,验证码也在里面 ######恩,我也是打算这样做,修改下ThinkPHP的验证码类,用Redis来存,而不是用Session######据红暑说,OSCHINA_SESSION只是个名字,跟session没点关系的。######看来红薯也是个大忽悠,哈哈######这个,session那个可以是随机生成的吧,可以放缓存或者放在一个静态数组里,验证过后unset,关系不大。session还不是随机生成的,然后保存序列化数据的,只是会放一个session id 到cookie这样吧######reg key猜测是确定验证码的key值,可以更改下值,再登陆,看验证码的正确与否######
我把验证码类改成了用Redis来记录,用Cookie来跟踪,不用系统的Session。我的考虑是以后方便做负载均衡。
倒是那个_reg_key_ 好像和验证码没直接关系######k######f###### session依赖cookie,没什么复杂的。自行模拟一个session就行了:
生成一个随机字符串,发送到cookie, 作为session_id, 然后将验证码保存到数据库中就行了。
说明楼主对session机制了解并不清楚,导致了才问这个问题。 ######嗯,明白的###### 推荐个会话共享框架,感兴趣可以了解一下:
bboss会话共享培训文档
bboss session共享架构及特点
bboss会话共享demo使用指南
bboss session共享使用方法介绍######谢谢######验证码可以用 缓存服务 memcached 或者 redis 来替代session
######嗯,我已经用redis来记录了######用Application,cache都行,记一下key,把key放页面里面###### 验证码功能也可以利用cookie来做,思路:
1,请求验证码图片,在后台生成验证码字符串,加密后写到cookie里面,服务端不做任何保存
2,验证验证码是否正确时,把用户输入的验证码与当前验证码cookie一并传到后台,然后在后台对用户输入的验证码加密,再与传过来的验证码cookie比较是否相等就可以了 ######回复 @月影又无痕 : 验证码在用户点击时生成.把cookie的过期时间设置为30秒后,并把该过期时间作为cookie内容的一部分用AES加密起来.就算从你看到验证码开始并套到你的脚本里执行,也就只能自动耍30秒.######回复 @千斤难买春秋醉 : 这里的数据库存储,就和session是同一个道理了。######回复 @月影又无痕 : 改进一下也是可以的,可以把加密串在数据库里存一下。前台传过来不但判断相等,还要判断数据库里有没有。如果有,删掉。如果没有,哼哼######@月影又无痕 我已减肥到了116斤######回复 @金三胖 : 三哥,你吃的这么胖,你的臣民们面黄肌瘦,身材矮小,好像就只有你一个胖子。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。