在为Devise中的用户做手动sign_in时,你怎么设置记住我是?

ben*_*ben 7 ruby-on-rails devise

Devise中,我正在以这样的方式登录我的用户:

sign_in_and_redirect(:user, user)
Run Code Online (Sandbox Code Playgroud)

在默认登录页面中,有一个用户可以选择的复选框,以便他们在返回站点时不必再次登录.但是,当您使用该sign_in_and_redirect(:user, user)行登录时,我无法确定如何将该参数设置为yes.有谁知道怎么样?谢谢阅读.

shi*_*ara 6

current_user.remember_me!
Run Code Online (Sandbox Code Playgroud)

https://github.com/plataformatec/devise/blob/master/lib/devise/models/rememberable.rb#L54

请注意,这仅更新remember_created_at用户记录的值。但为了使其正常工作,还需要将验证令牌存储在 Devise cookie 中。要实现这两件事,请遵循 Dmytrii 的建议并使用remember_me <USER>控制器方法:

include Devise::Controllers::Rememberable
...
remember_me <USER_OBJECT>
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用。相反,我必须使用 https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/rememberable.rb `include Devise::Controllers:Rememberable`,然后在操作中只需调用 `remember_me the_user` (6认同)

小智 5

做了一些测试.向他人介绍调查结果.

假设用户对象具有在声明上定义的可记忆模块,最简单的解决方案devise是在登录和重定向之前将remember_me设置为true:

@user.remember_me = true
sign_in_and_redirect(@user, :event => :authentication)
Run Code Online (Sandbox Code Playgroud)