现在我遇到了最后一个问题。我用:
config.action_controller.session_store = :cookie_store
和
ActionController::Base.session = {
#:domain => :all,
:key => 'xxxxxxxx',
:secret => 'xxxxxxxxxxx...',
:expire_after => 5.minutes
}
这很好用,它确实设置了一个 cookie 5 分钟不活动。我现在要做的是当用户在登录之前点击记住我时,我想给它一个更长的超时值:
这是我使用的登录操作:
session_user = User.authenticate(params[:user][:email], params[:user][:password])
if session_user
session[:user] = session_user.id
@user=User.find(session[:user])
@user.update_attributes(:last_login_time => Time.now(),:is_logged => true)
@user.save
flash[:message] = "Login successful."
redirect_to "/admin"
#cookies[:userd] = {:value => session_user, :expires => Time.now + 12}
if params[:remember_me]
#base.request.session_options = request.session_options.dup
#base.request.session_options[:expire_after]= 10000.minutes
#base.request.session_options.freeze
#session[:expire_after] = 96000.seconds.from_now
#ActionController::Base.session_options[:expire_after] = 1.years
#session[:expires] = Time.now + 1
session[:expires_at] = 5.days
end
else
flash[:warning] = "Your email or password is incorrect. Please re-enter."
end
end
正如您在 IF 中看到的(当用户单击记住我时执行),我尝试了许多不同的方法,但除了 ActionController::Base.session_options[:expire_after] = 1.years 之外,它们都不起作用,但它似乎永久覆盖了 [expire_after] 变量。
我需要做什么?