使用Authlogic对远程服务进行身份验证

时间:2010-02-17 15:31:20

标签: ruby-on-rails authlogic spree

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

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

1 个答案:

答案 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)

不确定这是不是你的意思,但希望它有所帮助!