因为需要在别的系统里使用到 devise 生成的 user 表。。当初没有去换那个 devise 的 config.encryptor,使用的默认值。所以,有知道的朋友告诉我一下,thank you so much.. 现在用的用户已经很多了,没法再去修改算法。
@Psi 还想请教一个问题,我想在注册的时候做一些操作,于是在 user 的 after_create 加了一些操作。但是加了以后注册貌似就失效了。表单提交以后就刷新一下页面。请问一下,devise 如果想在注册后写一些操作应该怎么做?
还有一个很纠结的问题就是从外部貌似没有办法来验证 devise 产生的密码。。好像是有个动态的 key。因为每次生成的加密字符串都不一样。。唉,这可如何是好。。
devise 用的是 bcrypt 这个 gem,算法好像是 blowfish,lz 可以去确认下。
下面解决你说的验证用户密码问题: 你应该去看一下数据库中的 hash 字段,我记得格式好像都是 xxxx#yyyy。 xxxx 是加密中的 salt,好像是 4 位或 6 位的数字,也就是你说的那个动态的 key。。。 yyyy 是实际的 hash 值。 所以用户提供的密码要加上 xxxx 这个 salt 再 hash 一下看是否和 yyyy 一样。 这里说的很明白了,剩下的 bcrypt 文档都有说明。
首页就写了:Encryptable: adds support of other authentication mechanisms besides the built-in Bcrypt (the default).
bcrypt 的好处是: