![]() |
1
8
仅供参考,您可能希望签出restful_身份验证插件,因为它将为您执行此操作。为什么要自己滚? 作为“认证”的方式是:
代码截图(从我的用户类随机复制粘贴,因此不要盲目粘贴此内容):
|
![]() |
2
1
对于Ethan的评论,什么是虚拟属性,虚拟属性是不在数据库中的属性,就像Matt的attr_accessor:password,通过这种方式,您可以接受来自用户的输入,但不必以那种形式存储,在这种情况下,我们希望能够接受明文密码,但我们希望将其加密存储。为此,我们有一个虚拟属性:password,在数据库中,我们将其存储为加密的\密码。 |
![]() |
3
1
好吧,你可以重写setter:
而这将 总是 加密值。你不需要在保存之前 或 一个属性访问器。 |
![]() |
4
1
请注意,最好为每个用户选择一个随机的n位值(在创建该用户时),并在散列密码时将其预先发送给密码。 原因是:如果任何人获得了你的数据库,他们不仅不能立即看到用户的密码,他们也看不到两个用户是否有相同的密码(如果其中一个用户获取了你的数据库,这一点很重要),并且某种类型的哈希破解攻击(彩虹表)变得更加困难。 |
![]() |
SpeakX · 从模板参数类型构造类类型元组 1 年前 |
![]() |
Astor · 简化编译时二进制树类型的创建 2 年前 |
|
Ryan · 更改JS中数字的功能(出于教育目的) 2 年前 |
![]() |
Janilson · 如何解决这种多变的模板歧义 2 年前 |
![]() |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 3 年前 |
![]() |
chenyuandong · Elixir中的元编程 7 年前 |
![]() |
Marcos Felipe · 基于存储的变量进行比较 7 年前 |