2013-05-22 26 views
5

Khi sử dụng mô-đun timeoutable cho Devise, làm cách nào để xác định khoảng thời gian trước phiên của người dùng hiện tại hết hạn? Mục tiêu là bao gồm giá trị này trong tất cả các câu trả lời để kịch bản phía máy khách có thể sử dụng nó. Tôi thu thập rằng Devise sử dụng nội bộ Warden để xác thực, nhưng tôi đã không tìm thấy bất cứ điều gì giải thích làm thế nào để kéo thời gian hết hạn phiên ra khỏi độ sâu của Warden.Rails/Devise - Xác định khi nào phiên người dùng sẽ hết hạn

Trả lời

10

Đây là cách bạn làm điều đó:

class User < ActiveRecord::Base 
    devise :authenticatable, :timeoutable, :validatable, :timeout_in => 20.minutes 
end 
+1

tôi biết rằng, nhưng phải mất bài viết của bạn để làm cho tôi nhận ra đó thực sự là câu trả lời. Cảm ơn! – cbmanica

+0

Điều gì xảy ra nếu tôi muốn 1 người dùng có thời gian chờ khác và người dùng khác khác? – user1735921

7

Hình như bạn có thể đặt nó trong mô hình như Benjamin Tân nói, hoặc bạn có thể đặt trong config/initializers/devise.rb

# ==> Configuration for :timeoutable 
# The time you want to timeout the user session without activity. After this 
# time the user will be asked for credentials again. Default is 30 minutes. 
# config.timeout_in = 30.minutes 

Xem câu hỏi StackOverflow này: Setting session length with Devise.

0

Đối với Rails 4:

config/initializers/devise.rb

if Rails.env.production? 
    config.timeout_in = 30.minutes 
    else 
    config.timeout_in = 7.days 
    end 

user.rb

class User < ActiveRecord::Base 
    devise :timeoutable 
end