【问题标题】:Why isn't the effect of devise sign_in method immediate?为什么设计 sign_in 方法的效果不是立竿见影的?
【发布时间】:2019-02-06 05:40:13
【问题描述】:

我尝试使用 sign_in(user) 以其他用户身份登录

(byebug) user = User.find(2)
# return me the record of user with ID=2
(byebug) current_user.id
1
(byebug) sign_in(user)
# return me the record of user with ID=2
(byebug) current_user.id
1 # I expect this to be 2!!

谁能解释一下原因?

注意:奇怪的是,我发现了一个名为 session["warden.user.user.key"].first.first 的新东西,它可以满足我的要求,但它似乎不是正确和干净的方法。

【问题讨论】:

  • 我认为 current_user 为请求设置了一次
  • 你为什么要通过调试器来实现这一点?
  • @Lenin Raj Rajasekaran 很高兴知道,您知道是否有我可以查看的文档吗?
  • @Nithin 我一步一步地完成它,这样我就可以检查事情是否符合我的期望

标签: ruby-on-rails ruby session devise


【解决方案1】:

Devise source code line 50 在sign_in 方法中表示:

# 什么都不做。用户已登录,我们不会强制登录。

所以我认为原因是因为如果我们已经以用户身份登录,Devise 不会登录新用户(除非我们强制这样做)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多