Padrino未到期的会议

时间:2011-07-26 17:54:04

标签: session-state padrino

我制作了一个Padrino应用程序,只有一个密码用于访问管理页面。我正在使用以下帮助程序进行授权。

# Check if the user is authenticated.
def authenticated?(opts = {})
  if session["cooly"] != options.session_secret
    redirect url(opts[:send_to] || :login)
  end
end

# Create a new session.
def authenticate!
  session["cooly"] ||= 0
  session["cooly"] = options.session_secret
end

立即写信,当我退出浏览器时,会话消失,我必须再次登录。我该如何保持会话?

3 个答案:

答案 0 :(得分:1)

确保您的应用有session_secret

set :session_secret, 'fc29ce0f33f0c8cde13f3'

答案 1 :(得分:0)

答案是制作非过期的 cookies

# Check if the user is authenticated.
def authenticated?(opts = {})
  if session["cooly"] == options.session_secret || request.cookies["cooly"] == options.session_secret
    return true
  else
    redirect url(opts[:send_to] || :login)
  end
end

# Create a new session.
def authenticate!
  session["cooly"] ||= 0
  session["cooly"] = options.session_secret

  expiration_date = 10.year.from_now

  response.set_cookie('cooly', :value => options.session_secret, :expires => expiration_date)
end

答案 2 :(得分:-1)

查看:https://gist.github.com/977690,这应该可以解决问题。