0

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

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

看起来它以用户范围调用warden.authenticate(假设用户是模型)

我是否也必须深入了解 Warden 代码库?

4

1 回答 1

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
于 2013-06-03T14:12:39.573 回答