Rails设计,通过session_store键找到current_user

时间:2018-01-28 21:32:31

标签: ruby-on-rails ruby-on-rails-3 authentication devise warden

我们在Rails上运行了一个生产系统(主应用程序),配置了devise gem(使用Redis会话存储)(所有子域都启用了会话)

我需要为我们的一个基于子域的微服务构建自定义身份验证服务。对于每个请求,此微服务将使用会话ID(rails会话存储密钥的cookie值)调用我们的主应用程序(在config / initializers / session_store.rb中配置)。

所以问题是,我可以通过会话ID找到用户吗? (使用Devise或Warden)

1 个答案:

答案 0 :(得分:2)

您可以使用方法将Devise的Authenticatable模块添加到名为serialize_from_session的资源中。您可以传入一个扩展的Warden会话变量,其中包括键和salt(serialize_from_session接受这两个作为参数)。例如,如果您在用户模型上使用Devise:

user = User.serialize_from_array(*session['warden.user.user.key'])

session['warden.user.user.key']变量是记录ID(作为数组)和salt的数组。它看起来像[[1], "$2f$23$2DIUF7Vr.J5sbfGwHTew"]