![](/img/trans.png)
[英]Rails + Devise: How can I check if a user is remembered when signing in
[英]How to automatically keep user remembered in Devise
我正在構建一個應用程序,我希望用戶在他們的計算機上自動被記住,而沒有“記住我”復選框。
我讀到我可能需要打電話給@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
這應該是一個持久選項,因此您可以在用戶的 after create 掛鈎上執行此操作,因為您希望它成為一個永久選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.