2012-11-17 5 views
1

내 응용 프로그램에서 authlogic을 사용하고 있습니다. 또한 A/B 테스트를 위해 나눠 봤습니다. split 대신 BasicAuthentication 인증을 사용하지 않고 인증을 위해 authlogic을 사용하고 싶습니다. sinatra 앱의 인증 미들웨어로 authlogic을 어떻게 사용할 수 있습니까?

그래서 내가 분할시나 애플 리케이션을위한 미들웨어로 내 인증 클래스를 설정합니다

Split::Dashboard.use SinatraAuthlogic 

그런 다음이 내 authlogic 미들웨어를해야한다 :

class SinatraAuthlogic 
    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    if is_user_logged_in? 
     puts @app.class 
     response = @app.call env 
    else 
     response = Rack::Response.new 
     response.redirect '/login' 
     response.finish 
    end 
    end 

private 

    def is_user_logged_in? 
    logged_in = UserSession.find && UserSession.find.user 
    end 
end 

질문은해야 내가 넣어 것입니다 authlogic을 사용하려면 is_user_logged_in을 사용 하시겠습니까? 일부 후

답변

0

내가이 솔루션을 내놓았다 시도 '? is_user_logged_in'

class Authlogic::RackAdapter < Authlogic::ControllerAdapters::AbstractAdapter 
    def initialize(env) 
    request = Rack::Request.new(env) 
    super(request) 
    Authlogic::Session::Base.controller = self 
    end 
end 

그리고 내가 수정 나의 미들웨어 클래스 이것에 방법 : 내가 구출 블록에 전체 코드를 삽입하는 이유 예외를 가지고 전무 경우 사용자가 대신 로그인하지 않은 그러나

def is_user_logged_id?(env) 
    begin 
    adapter = Authlogic::RackAdapter.new(env) 
    logged_in = UserSession.find && UserSession.find.user 
    return true 
    rescue Exception => e 
    return false  
    end 
end 

나는 사용자를 찾을 수있는이 방법 ... ...

더 나은 aproaches는 환영합니다.

관련 문제