2009-08-05 2 views
4

나는이 사실이 정말로 단순한 사용 사례처럼 들리는 것을 알고 있습니다.하지만 그것이 내가 바라기를 바라고 있습니다.하지만 모든 곳을 뒤에서 봤으며 어떤 방법으로도 언급하지 않았다고 맹세합니다. 이렇게하는 것이 가장 좋은 방법은 아닙니다.AuthLogic을 사용하여 콘텐츠 보호

나는 Ruby, Rails와 그 둘레에 새로운 브랜드입니다 (많은 것을라고 설명 할 수 있습니다). 학습 도구로 사용하는 더미 응용 프로그램은 의미있는 일을하기 위해 인증을 필요로하므로이 문제를 해결하기 시작했습니다. 필자는 AuthLogic 보석을 설치했으며 인트로 문서 및 Railscast에서 다루는 범위까지 훌륭하게 작동하도록했습니다. 이제 등록, 로그인 및 로그 아웃을 할 수있게되었습니다 ... 그걸로 뭔가해야합니다.

예를 들어 사용자가 이미지를 업로드 할 수있는 페이지를 만들어야합니다. 나는 upload 조치 방법을 사용하여 ImagesController을 계획하고 있지만 로그인 한 사용자 만 액세스 할 수 있기를 원합니다. 모든 제한된 동작에서 current_user이 없으면 리디렉션 할 코드를 추가 할 수 있다고 생각합니다.하지만 이는 매우 자세한 것으로 보입니다.

제한된 영역을 정의하거나 식별하고 인증 체크를 한 곳에서 처리 할 수있게 해주는 더 좋은 방법이 있습니까?

답변

6

당신이

def current_user_session 
    return @current_user_session if defined?(@current_user_session) 
    @current_user_session = UserSession.find 
end 

def current_user 
    return @current_user if defined?(@current_user) 
    @current_user = current_user_session && current_user_session.record 
end 

def require_user 
    unless current_user 
    store_location 
    flash[:notice] = "You must be logged in to access this page" 
    redirect_to new_user_session_url 
    return false 
    end 
end 

이 그런 다음 컨트롤러에서이 페이지

class ExamplesController < ActionController::Base 
    before_filter :require_user, :only => :private 

    def public 
    // some public stuff 
    end 

    def private 
    // some protected stuff 
    end 
end 
+0

감사합니다. Jim. 몇 가지를 살펴보고 추가 방법을 통해 작업해야했지만 완벽하게 작동했습니다. 고맙습니다. –

+0

"store_location"에 대해 무엇을 넣어야합니까? – Angela

0

before_filter 여기에 당신의 친구입니다에 대한 액세스를 제한하는 필터 전에를 사용할 수 있습니다 application_controller.rb에 이러한 방법이 있는지 확인하십시오. 유효한 세션이 없으면 false를 반환하고 원하는 컨트롤러 및 액션의 before_filter로 설정하는 require_authentication 함수를 정의합니다.

application_controller.rb 몇 가지 필터를 정의하는 Authlogic 샘플 응용 프로그램에서 봐, 그리고 당신이 당신의 계정을 파괴 로그인해야 예를 here 위해 (필요한 경우 다음을 사용하고 하지은을 만들 수 기록 새로운 것

0

페이지에서 before_filter를 사용하여 로그인 한 사용자 만 볼 수 있도록해야합니다. 예를 들어 before_filter 항목을 포함하여 Authlogic을 사용해야하는 예제가 필요하면 체크 아웃 할 수 있습니다 Authlogic Exmaple from Github

0

전체 코드는 Github에서 확인할 수 있습니다. 대략적으로 360 줄의 코드. 단계가 포함되어 있습니다.

http://gist.github.com/96556.txt

관련 문제