使用has_secure_password进行Rails身份验证

时间:2012-11-24 18:26:03

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

如何使用rails 3 has_secure_password创建会话?我已经查看了http://guides.rubyonrails.org/security.html

这一切都不具体。我必须使用会话方法吗?什么是社区标准?我不想使用Devise / Cancan。 我只需要基于cookie的简单授权/认证。

我是否应该在Cookie中存储用户对象?
密码是否容易受到攻击?

2 个答案:

答案 0 :(得分:3)

请参阅Michael Hartl关于第8章的本教程。他在解释使用has_secured的实现方面做得很好

http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

基本上,您需要在用户模型中使用密码字段和password_confirmation字段以及password_digest字段。通过在模型中调用has_secure_password,只要密码确认有效,就会生成password_digest。您可以通过选中以下内容登录会话控制器中的用户:

if user and user.authenticate(password)
  // sign_in_user
else
  // return error message
end

您的模型字段中还需要remember_token来识别Cookie中的用户。 您可以在身份验证时返回remember_token并将其设置为rails中的会话功能,例如:

user = User.find_by_email(email)
session[:remember_token] = user.remember_token

答案 1 :(得分:1)

如果您有足够的钱,Railscasts Pro会在第250集修订版中使用has_secure_password详细介绍这一点,Authentication from Scratch (revised)


还有一个稍微旧版本的免费截屏视频,其中包含详细的ASCIIcast。会话部分可能对您有用,无法阅读或观看。