Я спросил подобный вопрос hereСеансы в рельсах - динамические
Теперь я с последней проблемой. я использую:
config.action_controller.session_store = :cookie_store
с
ActionController::Base.session = {
#:domain => :all,
:key => 'xxxxxxxx',
:secret => 'xxxxxxxxxxx...',
:expire_after => 5.minutes
}
Это прекрасно работает, и это действительно устанавливает печенье в течение 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].
Что мне нужно сделать?
переопределение ActionController :: Base устанавливает значение, которое влияет на все глобальное. Мне это не нужно. Мне просто нужно, если вы не запомните меня, тогда у cookie будет 5 минут (как это уже есть), если вы нажмете на кнопку «запомнить меня», а затем, вероятно, на 3 недели или около того. Я просто не могу сделать это, независимо от того, какой код я использую (все комбинации, которые я пытался в комментариях) ... Также код запускается независимо от redirect_to. –
@Wexoni - привет спасибо за исправление на 'redirect_to' - я рассматривал его как проблему из-за коленной реакции от моей работы ASP.NET (перенаправления ASP.NET являются немедленными и действуют как« возврат »метода) , – mcfazz