Kar*_*ran 10 ruby-on-rails devise
我正在构建一个应用程序,我希望用户在他们的计算机上自动记住,而不需要"记住我"复选框.
我读到我可能不得不打电话@user.remember_me!,但不知道在哪里调用它,因为隐藏了Devise控制器.
我正在考虑在sign_in表单中添加一个隐藏的复选框字段,默认情况下标记了复选框,但我希望我能在控制器端执行此操作.
知道如何做到这一点?
谢谢!
Vin*_*Woo 17
如果您在设计中阅读此拉取请求:https://github.com/plataformatec/devise/issues/1513,默认情况下,经过制裁的记忆方式似乎只是在您的User类上定义:
class User
def remember_me
true
end
end
Run Code Online (Sandbox Code Playgroud)
Jes*_*ott 15
我认为定制你的设计控制器是这里的方法.
目标:为每个人自动设置记住我.
首先,创建一个设备会话控制器.让我们告诉有关它的铁路路线
配置/ routes.rb中
devise_for :users, :controllers => {:sessions => 'sessions'}
Run Code Online (Sandbox Code Playgroud)
应用程序/控制器/ sessions_controller.rb
class SessionsController < Devise::SessionsController
def create
params[:user].merge!(remember_me: 1)
super
end
end
Run Code Online (Sandbox Code Playgroud)
这样,用户记住我将始终设置为true.好极了!
然后,您需要编辑登录表单以不显示remember_me复选框.
另外,在初始化程序中将其更改为远程:
#config.remember_for = 2.weeks
config.remember_for = 1.year
Run Code Online (Sandbox Code Playgroud)