簡體   English   中英

如何在設計中自動記住用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM