优惠码没那么复杂

昨天要做一个优惠码的功能。下单结账的时候,输入优惠码之后,价格会变成优惠后价格。

我想了一会儿,觉得优惠码这个功能的核心就是两个,生成验证

所谓优惠码,其实就是一串乱码而已,用 SecureRandom 方法就可以生成。

那么验证怎么搞呢?很自然地,我就想到,这跟用户登录的密码验证一样啊,用哈希密码摘要就可以了。优惠码生成的时候,同时生成一对 token 和 digest,token 作为优惠码,而 digest 则保存起来作为验证用。

正准备开干,转念一想,好像不需要搞那么复杂。

用户登录的密码验证使用哈希密码摘要的一个重要原因是,即使网站被 hack,数据库曝光,黑客也只能知道用户密码的 digest,因为数据库是不保存密码本身的。这就大大加强了用户系统的安全性。

但是优惠码……好像不需要搞那么复杂。网站被黑,优惠码曝光好像没什么影响。那么,直接把优惠码保存在数据库里,验证的时候,只需要在数据库里查找是否存在就可以了。

真是应了那个说法:当你手里拿着锤子的时候,看什么都是钉子。

· rails, talks