2011-03-12 7 views

답변

1

HTTP 기본 인증과 관련된 세션이 없습니다. 애플리케이션 레벨에서해야 할 세션과 인증을 연결하려면 랙 미들웨어처럼 들리십시오.

1

안녕하세요 미안 해요 당신의 게시물을보고 후반 응답을, 어쩌면 그것은 여전히 ​​당신을 도울 수 : 이 코드는 http://opennebula.org/

use Rack::Session::Pool 

def authorized? 
    session[:ip] && session[:ip]==request.ip ? true : false 
end 

def build_session 
    auth = Rack::Auth::Basic::Request.new(request.env) 
    if auth.provided? && auth.basic? && auth.credentials 
     user = auth.credentials[0] 
     sha1_pass = Digest::SHA1.hexdigest(auth.credentials[1]) 

     rc = SunstoneServer.authorize(user, sha1_pass) 
     if rc[1] 
      session[:user]  = user 
      session[:user_id] = rc[1] 
      session[:password] = sha1_pass 
      session[:ip]  = request.ip 
      session[:remember] = params[:remember] 

      if params[:remember] 
       env['rack.session.options'][:expire_after] = 30*60*60*24 
      end 

      return [204, ""] 
     else 
      return [rc.first, ""] 
     end 
    end 

    return [401, ""] 
end 

def destroy_session 
    session.clear 
    return [204, ""] 
end 
OpenNebula 의 일부가되는 장석 응용 프로그램에서 수행되었다