设计user_signed_in?它是如何工作的?

时间:2013-06-03 13:58:44

标签: ruby-on-rails ruby ruby-on-rails-3 security devise

在此处列出的设计源代码中: https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/helpers.rb

第56行究竟做了什么?换句话说,我不确定如何设定用户是否已登录。

它看起来像用户的范围调用warden.authenticate(前提是用户就是模型)

我是否也必须深入研究Warden代码库?

1 个答案:

答案 0 :(得分:3)

设计委托人的工作。 Warden检查用户名和密码是否有效。

Warden::Strategies.add(:my_strategy) do

  def valid?
    params[:username] && params[:password]
  end

  def authenticate!
    u = User.find_by_username_and_password(
      params[:username],
      params[:password] # you should encrypt this. ;)
    )

    u.nil? ? fail!("Couldn't log in") : success!(u)
  end
end