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
5
A
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
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
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
Đ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