0

我需要允许用户使用非标准身份验证服务登录狂欢。我社区中的用户都有为我们设置的另一个 3d 派对服务的帐户。该服务提供了一个 Web 服务,它接受登录名和密码,如果成功则返回一个用户 ID。作为管理员,我可以查询用户个人资料信息。

我一直在想象,当用户尝试登录时,我会针对远程服务运行他们的凭据,如果成功,则存储用户名,然后检索配置文件信息并将其推送到数据库(名称、地址等)。 .)。这是正确的方法吗?我怎么会这样做?

4

1 回答 1

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 的验证,您可以valid_password?(password_plaintext)从您的自定义 verify_password_method 中调用。

不确定这是否是您的意思,但希望对您有所帮助!

于 2010-02-17T17:25:29.010 回答