2012-03-01 3 views
0

내 config.ru에서 인증을 위해 기본 인증을 사용하고 있습니다. Auth Basic 블록에서 경로에서 ID 및 ID를 가져 와서 사용자가 경로를 볼 권한이 있는지 확인하려고합니다. 그러나 경로에 액세스하는 방법을 알아낼 수 없습니다.config.ru에서 랙 경로에 액세스

use Rack::Auth::Basic do |username, password| 
    # access path here 
end 

아이디어가 있으십니까?

답변

0

use을 통해 Rack::Auth::Basic을 넣는 경우 실제로 요청 처리 체인에 삽입합니다. 그러면 모든 요청을 인증하려고 시도 할 것입니다. 선택적으로 사용하려면 특정 경로에서만 해당 요청 끝점 (작업)에서만 인증을 수행해야합니다. 같은 뭔가 -

# helpers in ApplicationController 
def authorized? 
    @auth = Rack::Auth::Basic::Request.new(request.env) 
    @auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['username', 'password'] 
end 

def username(username) 
    @auth.credentials[0] 
end 

# action in PostsController 
def index 
if authorized?(params[:id]) && username == "admin" 
    # protected stuff 
else 
    render :text => "unauthorized" 
end 
end 

참조 : Sinatra doc

인증의 종류는 전체 사용자 계정 및 세션 기반의 접근 방식을 수행하여 훨씬 더 처리 할 수 ​​있지만. 레일 3.1 또는 devise의 체크 아웃 has_secure_password.

관련 문제