14

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

我读到我可能需要调用@user.remember_me!,但由于设计控制器是隐藏的,所以不确定在哪里调用它。

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

知道如何做到这一点吗?

谢谢!

4

3 回答 3

21

如果您在设计中阅读此拉取请求:https://github.com/plataformatec/devise/issues/1513,默认情况下要记住的认可方式似乎只是在您的 User 类上定义:

class User
   def remember_me
     (super == nil) ? true : super
   end
end
于 2014-07-13T00:21:28.687 回答
16

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

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

首先,创建一个设计会话控制器。让我们告诉 Rails 路线吧

配置/路由.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
于 2013-01-19T19:27:34.347 回答
0

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

于 2013-01-19T18:11:20.127 回答