2

有没有办法根据用户类型使 authentication_keys 配置有条件?

例如,在我的用户模型中,我有两个不同的用户,标准用户和学生,由位掩码属性的值定义。我想根据用户名和 school_id 对学生进行身份验证。标准用户不必为 school_id 设置值。为了适应这一点,我有两种类型的登录屏幕,一种用于学生,另一种用于标准用户。学生登录屏幕有一个隐藏的 school_id 字段,用于对他们的学校进行身份验证。

在我的设计配置文件中,我有:

config.authentication_keys = [ :username, :school_id ] 

但是,使用此设置标准用户无法登录,我的猜测是它期望所有经过身份验证的用户都有一个 school_id。是否可以使身份验证密钥有条件?或者给 school_id 一个 allow_blank 选项?我希望能够将标准用户和学生保持在同一模型中。

4

1 回答 1

2

是的,只需在您的模型中执行:

class User < ActiveRecord::Base
  devise :database_authenticatable, authentication_keys: [:username]
end

class Student < ActiveRecord::Base
  devise :database_authenticatable, authentication_keys: [:username, :student_id]
end
于 2012-10-26T10:22:51.000 回答