我用了rubycas-server构建一个sso系统,使用devise来做用户的系统,但现在我的问题是,rubycas-server只有一个字段,如“电子邮件”,我想使用“电子邮件”/“电话”/“昵称”进行用户登录。 wiki 中没有更多信息
authenticator:
class: CASServer::Authenticators::SQLBcrypt
database:
adapter: mysql2
database: xxxx
username: root
password: xxxx
host: localhost
user_table: users
username_column: email # tel/nickname
password_column: encrypted_password
抱歉我的英语不好!帮助我,非常感谢!
最佳答案
恐怕这不可能。官方可以看到repository ,此身份验证器仅将给定的列名与用户名匹配:
def matching_users
results = user_model.find(:all, :conditions => ["#{username_column} = ?", @username])
results.select { |user| BCrypt::Password.new(user.send(password_column.to_sym)) == @password }
end
对于您的情况,最好的办法是编写与 email/tel/nickname
匹配的自定义身份验证器。不过,这是非常难用的登录名,请考虑一些对用户更友好的名称。
关于ruby-on-rails - 如何使用具有多字段的 rubycas-server 对用户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26837521/