我需要允许用户使用非标准身份验证服务登录狂欢。 我社区中的用户都拥有为我们设置的另一个3D派对服务的帐户。该服务提供了一个获取登录名和密码的Web服务,如果成功则返回userId。 作为管理员,我可以查询用户个人资料信息。
我一直在想,当用户尝试登录时,我会针对远程服务运行他们的凭据,如果成功,则存储用户名然后检索配置文件信息并将其推送到db(名称,地址,等等...)。这是正确的方法吗?我怎么会这样做?
答案 0 :(得分:0)
虽然我没有使用过spree,如果这涉及Authlogic(正如你的主题所示),那么你可以编写自己的方法来验证用户,而不是依赖Authlogic来验证本地数据库。
在您的UserSession模型中:
class UserSession < Authlogic::Session::Base
verify_password_method :my_custom_auth_method
...
然后在您的用户模型中:
def my_custom_auth_method(password_plaintext)
# user 'password_plaintext' and 'self.username' to validate
# against remote service returning true or false
end
如果您想在自己的方法之外使用Authlogic验证,可以在自定义verify_password_method中调用valid_password?(password_plaintext)
。
不确定这是不是你的意思,但希望它有所帮助!