我正在构建一个应用程序,我希望用户在他们的计算机上自动被记住,而不需要“记住我”复选框。
我读到我可能需要调用@user.remember_me!
,但由于设计控制器是隐藏的,所以不确定在哪里调用它。
我正在考虑在 sign_in 表单中添加一个隐藏的复选框字段,该复选框默认标记为复选框,但我希望我可以在控制器端执行此操作。
知道如何做到这一点吗?
谢谢!
我正在构建一个应用程序,我希望用户在他们的计算机上自动被记住,而不需要“记住我”复选框。
我读到我可能需要调用@user.remember_me!
,但由于设计控制器是隐藏的,所以不确定在哪里调用它。
我正在考虑在 sign_in 表单中添加一个隐藏的复选框字段,该复选框默认标记为复选框,但我希望我可以在控制器端执行此操作。
知道如何做到这一点吗?
谢谢!
如果您在设计中阅读此拉取请求:https://github.com/plataformatec/devise/issues/1513,默认情况下要记住的认可方式似乎只是在您的 User 类上定义:
class User
def remember_me
(super == nil) ? true : super
end
end
我认为定制你的设计控制器是去这里的方式。
目标:自动为每个人设置记住我。
首先,创建一个设计会话控制器。让我们告诉 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
这应该是一个持久选项,因此您可以在用户的创建后挂钩上执行此操作,因为您希望它是一个永久选项。