0
我爲Sinatra創建了一個簡單身份驗證,但會話對象似乎正在清除所有自定義密鑰。例如,當用戶登錄時:會話數據未保存在Sinatra簡單身份驗證中
session[:user_id] = current_user.id
這實際上存儲在當前請求的會話對象中。當發生新的請求時,會話[:user_id]不再存在。會話處於活動狀態,cookie已啓用。我嘗試了所有我無法弄清楚的問題(這裏是所有相關的代碼:https://gist.github.com/ksiomelo/7656296)。
應用:
use Rack::Session::Cookie , :secret => "82e042cd6fde2bf1764f777236db799e"
enable :sessions # for flash messages
助手:
def require_auth
unless session[:user_id]
flash[:error] = "You need to be logged in."
redirect to("/login")
end
end
def current_user
@current_user ||= User.find_by_id(session[:user_id]) if session[:user_id]
end
登入:
authorized_user = User.authenticate(params[:email],params[:password])
if authorized_user
# update session/redirect
session[:user_id] = authorized_user.mongo_id.to_s
session.options[:expire_after] = 2592000 unless params[:remember].nil? # 30 days
# redirect to the wizard
flash[:info] = "Welcome back #{authorized_user.first_name}"
redirect to("/home")
嘗試爲會話處理設置提供者, g .:'使用Rack :: Session :: Pool,:expire_after => 2592000' – mudasobwa
顯然工作,我錯過了在文檔中。發佈這個解決方案,我會接受它!謝謝! – ksiomelo