新项目,前台想学OSC不用Session,但验证码不知道怎么办

金三胖 发布于 2015/01/26 21:39
阅读 1K+
收藏 5

新项目,前台想学OSC不用Session,而是用Cookies来跟踪用户。所以项目默认没有开启Session。

但网站一些关键地方需要使用验证码。大家都知道,一般验证码服务端是用Session记录。

听说OSC登录启用验证码了,我就来看看,OSC验证码是不是没用Session,用错误密码登录了几次,发现原来还是用的。

那么问题来了:

1、项目中禁用Session除了可以解决Session引起的脚本阻塞问题、负载均衡中的Session问题,还有哪些好处与坏处?(我好权衡是否启用Session)

2、OSC Cookies中的 _reg_key_ 作用是什么?

加载中
0
leo108
leo108

在生成和校验验证码的时候开启session呗

0
铂金小鸟
铂金小鸟

后端应该还是有数据放到缓存里面的,OSCHINA_SESSION 作为key,验证码也在里面

金三胖
金三胖
恩,我也是打算这样做,修改下ThinkPHP的验证码类,用Redis来存,而不是用Session
0
红白机
红白机
据红暑说,OSCHINA_SESSION只是个名字,跟session没点关系的。
金三胖
金三胖
看来红薯也是个大忽悠,哈哈
0
欣儿
欣儿
这个,session那个可以是随机生成的吧,可以放缓存或者放在一个静态数组里,验证过后unset,关系不大。session还不是随机生成的,然后保存序列化数据的,只是会放一个session id 到cookie这样吧
欣儿
欣儿
reg key猜测是确定验证码的key值,可以更改下值,再登陆,看验证码的正确与否
0
金三胖
金三胖

引用来自“欣儿”的评论

这个,session那个可以是随机生成的吧,可以放缓存或者放在一个静态数组里,验证过后unset,关系不大。session还不是随机生成的,然后保存序列化数据的,只是会放一个session id 到cookie这样吧
谢谢
我把验证码类改成了用Redis来记录,用Cookie来跟踪,不用系统的Session。我的考虑是以后方便做负载均衡。
倒是那个_reg_key_ 好像和验证码没直接关系
lr0822
lr0822
k
lr0822
lr0822
f
0
月影又无痕
月影又无痕

session依赖cookie,没什么复杂的。自行模拟一个session就行了:

生成一个随机字符串,发送到cookie, 作为session_id, 然后将验证码保存到数据库中就行了。

说明楼主对session机制了解并不清楚,导致了才问这个问题。

金三胖
金三胖
嗯,明白的
0
开源中国董事会主席
开源中国董事会主席
验证码可以用 缓存服务 memcached 或者 redis 来替代session
金三胖
金三胖
嗯,我已经用redis来记录了
0
徐迎龙
徐迎龙
用Application,cache都行,记一下key,把key放页面里面
0
时间在追我
时间在追我

验证码功能也可以利用cookie来做,思路:

1,请求验证码图片,在后台生成验证码字符串,加密后写到cookie里面,服务端不做任何保存

2,验证验证码是否正确时,把用户输入的验证码与当前验证码cookie一并传到后台,然后在后台对用户输入的验证码加密,再与传过来的验证码cookie比较是否相等就可以了

eechen
eechen
回复 @月影又无痕 : 验证码在用户点击时生成.把cookie的过期时间设置为30秒后,并把该过期时间作为cookie内容的一部分用AES加密起来.就算从你看到验证码开始并套到你的脚本里执行,也就只能自动耍30秒.
月影又无痕
月影又无痕
回复 @千斤难买春秋醉 : 这里的数据库存储,就和session是同一个道理了。
千斤难买春秋醉
千斤难买春秋醉
回复 @月影又无痕 : 改进一下也是可以的,可以把加密串在数据库里存一下。前台传过来不但判断相等,还要判断数据库里有没有。如果有,删掉。如果没有,哼哼
金三胖
金三胖
@月影又无痕 我已减肥到了116斤
月影又无痕
月影又无痕
回复 @金三胖 : 三哥,你吃的这么胖,你的臣民们面黄肌瘦,身材矮小,好像就只有你一个胖子。
下一页
返回顶部
顶部