如何在Devise中自动记住用户记忆

时间:2013-01-19 18:04:49

标签: ruby-on-rails devise

我正在构建一个应用程序,我希望用户可以在他们的计算机上自动记住这些用户,而无需“记住我”复选框。

我读到我可能需要调用@user.remember_me!,但不知道在哪里调用它,因为隐藏了Devise控制器。

我正在考虑在sign_in表单中添加一个隐藏的复选框字段,默认标记为复选框,但我希望我可以在控制器端执行此操作。

知道如何做到这一点?

谢谢!

3 个答案:

答案 0 :(得分:15)

我认为定制你的设计控制器是这里的方法。

目标:自动为每个人设置记住我。

首先,创建一个设备会话控制器。让我们告诉有关它的铁路路线

<强>配置/ routes.rb中

devise_for :users, :controllers => {:sessions => 'sessions'}

应用/控制器/ sessions_controller.rb

class SessionsController < Devise::SessionsController

  def create
    params[:user].merge!(remember_me: 1)
    super
  end

end

这样,用户记住我将始终设置为true。耶!

然后,您需要编辑登录表单,以便不显示remember_me复选框。

另外,在初始化程序中将其更改为远离某些内容:

#config.remember_for = 2.weeks
config.remember_for = 1.year

答案 1 :(得分:13)

如果您在设计中阅读此拉取请求:https://github.com/plataformatec/devise/issues/1513,默认情况下,经过制裁的记忆方式似乎只是在您的用户类上定义:

class User
  def remember_me
    true
  end
end

答案 2 :(得分:0)

这应该是一个持久性选项,因此您可以在用户的​​后创建挂钩上执行此操作,因为您希望它是永久选项。