Authlogic:如何在不知道密码的情况下在幕后登录用户

Max*_*ams 4 ruby-on-rails authlogic

我使用Authlogic来处理登录/身份验证/会话等,我使用paypal处理我的订阅我的网站的付款.对于试用期已过期的用户,我想在完成PayPal付款流程后自动登录,但我无法知道如何在没有密码的情况下执行此操作.我的流程因此是:

  • 过期的用户登录
  • 他们的审判已经过期了,所以我将他们推送到订阅页面,通过他们独特的persistence_token字段跟踪他们是谁,我把它放入一个被发送到PayPal的param.
  • 当我从paypal收到付款通知时,我也得到了他们的令牌,所以我知道哪个用户付了钱,我相应地修改了他们的帐户.
  • 当他们用paypal付款时,将他们发送回我网站的按钮有他们订单的唯一标记,所以我可以告诉他刚刚付款的人就是那个"订阅完整"页面,而不是任何人只需在浏览器中输入网址即可.
  • 当他们从paypal返回到网站时,他们仍然会退出,他们必须经历登录/注册过程.

在上面的情况下,因为我将params中的订单令牌收到我的'subscription_complete'页面,我知道用户是刚刚付款的用户,所以我有足够的信息来信任他们,好像他们已经记录因此,我想自动记录它们,即为它们创建一个UserSession记录.但是,问题是我不知道他们的密码(因为密码是单向加密的),我需要密码来创建user_session.

所以,我的问题是:如果我信任当前用户,但不知道他们的密码,我仍然可以记录他们吗?如果是这样,怎么样?

jor*_*inl 5

我以前用过UserSession.create(@user).这不适合你吗?