我正在使用Rails 3.1创建一个Web服务,该服务需要经过身份验证的用户帐户才能创建/管理内容。它还要求临时“用户”访问内容的授权方案 - 他们没有帐户,但只会提供由在其请求中创建内容的用户提供的密码。
我认为最好的策略是保持两者分开,而不是为瞬态用户创建帐户,将它们表示为与内容相关联的单独模型。
我的问题是,这是否是我应该从头开始构建的,或者我是否能从其中一个现有的身份验证宝石中获得足够的杠杆作用。如果是后者,我将如何配置它以管理两种不同的策略。
答案 0 :(得分:0)
如果理解正确,您将拥有常规帐户用户和用户生成的临时帐户,以共享对任何内容的访问权限。 我不认为有这个特定目的的东西存在。 我认为使用可靠且可靠的Auth Manager gem将需要保护用户和tmp_account访问。 reste,即管理user-tmp_account关系和管理tmp_account的生命时间+权利,可以手动完成。 我个人建立了与宝石Devise类似的东西。
答案 1 :(得分:0)
原来我不需要认证宝石。虽然实现没有完成,但看起来Rails 3.1的has_secure_password和CanCan的组合对此很有效。
以下是Ryan Bate使用has_secure_password的教程:http://asciicasts.com/episodes/270-authentication-in-rails-3-1
我们的想法是在User和Content模型上使用has_secure_password,并实现current_user,以便在提供密码时创建临时User,在该临时用户上设置password属性。然后执行init方法CanCan的Ability类将根据can块中的内容验证临时用户的密码。