慢速加密的密码很难破解。慢速加密的过程会延长测试的运行时间,不过可以做个简单的设置改变这种情况。
bcrypt-ruby
使用耗时因子(cost factor)设定加密过程的耗时,耗时因子的默认值倾向于安全性而不是速度,在生产环境这种设置很好,但测试时的关注点却有所不同:测试追求的是速度,而不用在意测试数据库中用户的密码强度。我们可以在“测试环境”配置文件
config/environments/test.rb
中加入一行代码来解决速度慢的问题:把耗时因子的默认值修改为最小值,提升加密的速度,即使测试量很少,修改设置之后速度的提升也是很明显的(《Ruby on Rails Tutorial》)
ActiveModel::SecurePassword.min_cost = true
顺便,Rails 还会自动把有错误的字段包含在一个 class 为 field_with_errors
的 div
元素中,也就是在表单出错的位置加上一个field_with_errors的class,这样就可以通过设定样式表来对错误的域予以提示。
默认情况下帮助函数只可以在视图中使用,不能在控制器中使用,如果需要同时在控制器和视图中使用帮助函数,就要手动引入帮助函数所在的模块。