2013-11-26 6 views
0

Sinatra에 대한 간단한 인증을 만들었지 만 세션 개체가 모든 사용자 정의 키를 정리하고있는 것으로 보입니다. 예를 들어, 사용자가 로그인 할 때 :Sinatra에서 세션 데이터가 저장되지 않음 단순 인증

session[:user_id] = current_user.id 

이것은 현재 요청에 대한 세션 개체에 효과적으로 저장됩니다. 새 요청이 발생하면 세션 [: user_id]이 (가) 더 이상 존재하지 않습니다. 세션이 활성화되어 있고 쿠키가 활성화되어 있습니다. 나는 그것이 무엇인지 잘못 이해할 수없는 모든 것을 시도했다. (여기에는 모든 관련 코드가있다 : 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") 
+0

세션 처리를 위해 공급자를 설정하십시오. g :'Rack :: Session :: Pool, : expire_after => 2592000' – mudasobwa

+0

을 사용하는 것 같습니다. 나는 문서에서 그 것을 놓쳤습니다. 솔루션으로 게시하고 받아 들일 것입니다! 감사! – ksiomelo

답변

1

. g :

use Rack::Session::Pool, :expire_after => 2592000 

관련 문제