Devise身份验证的额外登录字段

时间:2013-09-14 08:00:57

标签: ruby-on-rails devise

在我的Rails应用程序中,我使用Devise进行身份验证。现在我想用一个额外的字段来扩展登录屏幕,用户只需要填写一个他知道的值,比如他在公司或其他什么地方开始的日期。

除了常规电子邮件和密码字段外,如何将此额外检查添加到Devise身份验证检查过程中?

我读了一些关于你可以在用户模型中扩展的active_for_authentication?

def active_for_authentication?
  super && special_condition_is_valid?
end

这是正确的方法吗?

编辑:最后我覆盖了SessionsController:

class SessionsController < Devise::SessionsController

protected

  def after_sign_in_path_for(resource)
    if resource.is_a?(User) && !resource.correct_token?(params[:user][:security_token])
      sign_out resource
      flash[:error] = I18n.t('.devise.failure.invalid_token')
      root_path
    else
      super
    end
  end

end

这受到了解决方案的启发:Rails + Devise - Is there a way to BAN a user so they can't login or reset their password?

我留下的唯一问题是,当提交无效令牌时,成功和错误消息都是可见的......

1 个答案:

答案 0 :(得分:1)

我会简单地生成视图:

bundle exec rails generate devise:views

这会将设计视图复制到您的app / views文件夹中。 之后,您可以修改app / views / devise / sessions / new.html.erb文件,并使用表单字段对其进行扩展。

之后,您可以覆盖设计控制器。

相关问题