2010-01-20 7 views
2

사용자가 로그인하면 사용자 ID가 세션에 저장됩니다. session[:user_id] == nil사용자가 로그인하지 않은 상태에서 로그인 페이지로 리디렉션하는 방법

나는 그것을 할 것이라고 생각하는 방법은이 컨트롤러의 각 방법으로 수행 할 것입니다 경우

session[:user_id] = user.id 

는 지금 우리 사이트의 모든 다른 링크에, 우리는 사용자가 리디렉션합니다.

def show_customers 
    if session[:user_id] == nil 
    redirect_to (:controller => "authentication", :action => "login") 
    #code related to show_customers goes here 
end 

그러나 이것은 모든 컨트롤러의 모든 방법에서 수행되어야합니다.

이 작업을 수행하는 데 더 제 정상적인 레일이 있습니까?

+0

인증과 관련하여 모든 질문에이 말을하겠습니다.하지만 허가를 받기 위해 쉽게 사용할 수있는 라이브러리를 사용하시기 바랍니다. 그렇지 않다면, 당신은되어야합니다! – jonnii

답변

5

세션이 유효한지 확인하려면 before_filter를 사용하고 모든 컨트롤러에 넣지 않으려면 application_controller에 넣으십시오 (모든 컨트롤러가 상속하므로). 또한 컨트롤러에서 메서드를 재정 의하여 호출 한 작업을 쉽게 제외하거나 제한 할 수 있습니다.

+0

또는 관리자 컨트롤러를 만들고이 컨트롤러에서 '보호 된 컨트롤러'를 상속하십시오. (그리고 beforecourse는 before_filter와 메소드를 Admin Controller에 넣었습니다) – Veger

관련 문제