首页 > 解决方案 > 登录时对用户进行身份验证

问题描述

我是初学者,正在学习 Rails 教程 https://www.learnenough.com/ruby-on-rails-6th-edition-tutorial/basic_login#sec-finding_and_authenticating_a_user>

最后一课我create是新的user,我正在验证rails``console使用booleans以证明用户是否email与会话password匹配。login

这是我在session controller文件中的代码:

class SessionsController < ApplicationController

  def new
  end

  def create
     user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
    else
      render 'new'
    end
  end

  def destroy
  end
end

并在 rails 控制台中进行验证:

user = User.first
=> User id: 1, name: "Rails Tutorial", email: "example@railstutorial.org", created_at: "2020-02-13 01:04:12", updated_at: "2020-02 -13 01:04:12",密码摘要:[过滤]

!!(user && user.authenticate('railst1234'))
=> false

这里的问题是为什么如果电子邮件和密码信息返回 FALSE。假设是对的?

标签: formsauthenticationruby-on-rails-5

解决方案


我认为这是因为您正在尝试验证加密密码,但在没有给用户模型的情况下创建密码确认。这是了解用户密码的好链接。

如果您不想要用户的加密密码,这也可以帮助您。


推荐阅读