Ruby on rails 如何使用带有多字段的rubycas服务器对用户进行身份验证?
我曾经构建过一个sso系统,使用Desive来完成用户的系统,但现在我的问题是,只有一个字段像“email”,我想使用“email”/“tel”/“昵称”进行用户登录。中没有更多信息Ruby on rails 如何使用带有多字段的rubycas服务器对用户进行身份验证?,ruby-on-rails,ruby,single-sign-on,rubycas-server,Ruby On Rails,Ruby,Single Sign On,Rubycas Server,我曾经构建过一个sso系统,使用Desive来完成用户的系统,但现在我的问题是,只有一个字段像“email”,我想使用“email”/“tel”/“昵称”进行用户登录。中没有更多信息 对不起,我的英语很差!帮帮我,非常感谢 我很惊讶这是不可能的。从官方文件中可以看出,此验证器仅将给定的列名与用户名匹配: def matching_users results = user_model.find(:all, :conditions => ["#{username_column} =
对不起,我的英语很差!帮帮我,非常感谢 我很惊讶这是不可能的。从官方文件中可以看出,此验证器仅将给定的列名与用户名匹配:
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
对于您的情况,最好是编写与
电子邮件/tel/昵称
匹配的自定义验证器。然而,这是一个非常困难的登录名,请考虑一些更友好的用户。 < P>在RujyCAS/LIB/CASServer/AudioCuths/SqLyBCRIPT中修改以下代码。RB
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
到
我会说,克隆repo,编写自己的包装器,并在这个应用程序中实现它。如果可能的话,如果您想帮助社区使用您的功能,请尝试创建一个请求。我检查了他们的系统,没有找到任何解决多个登录密钥的方法。我可以看看,如果可能的话,我会给你写一个包装纸。但是我怕如果我有那么多时间!我也在想同样的事情。也许,在发送到SSO端之前,可以在客户端应用程序中查找用户。我相信这会更有意义。这种事情应该只在客户端处理。SSO部分应该只关心身份验证。从我的理解来看,你的答案应该是正确的。
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
def matching_users
if username_column.include?(',')
columns = username_column.split(',')
sql = ''
conditions = []
columns.each do |field|
if sql.length != 0
sql += ' or '
end
sql += "#{field} = ?"
conditions << @username
end
conditions.unshift(sql)
else
conditions = ["#{username_column} = ?", @username]
end
results = user_model.find(:all, :conditions => conditions)
results.select { |user| BCrypt::Password.new(user.send(password_column.to_sym)) == @password }
end
authenticator:
class: CASServer::Authenticators::SQLBcrypt
database:
adapter: mysql2
database: test
username: root
password: map
host: localhost
user_table: users
username_column: email,nickname,tel
password_column: encrypted_password