2011-09-15 2 views
1

로그인 한 사용자에 루트 로그인 한 사용자를 위해, 나는 현재 방문자가 로그인하지 않은 경우 사용자 ID 또는 전무를 반환하는 CURRENT_USER 도우미를 제한합니다.특정 내가에만 액세스 할 수/일을하고 싶습니다

어디에 컨트롤러에 대한 액세스를 제한 할 수있는 가장 좋은 장소는 어디일까요? 아니면 루트의 일부로 추가 할 수 있습니까?

답변

4

컨트롤러에 before_filter를 추가하고 그에 대한 작업을 만들어야합니다.

:before_filter :authenticate 

def authenticate 
    redirect_to(registration_path) unless current_user.nil? 
end 

또한 : 또는 : 필터 옵션을 사용할 수 있습니다. 또는 나는 잠정적 인 질문을하지 않았습니까?

+0

또한 railstutorial.org에 문의하십시오. 초보자를위한 좋은 튜토리얼. – avy

+0

이 작업을 수행하려면'before_filter : authenticate'를 사용해야했습니다. 콜론은 없습니다. – jcollum

+0

대답하기 때문에, 이것은 'before_action'로 이름이 바뀌었고 올바른 양식은'before_action : authenticate'과'@ current_user.nil?'이었습니다. 아마도 이것은 인스턴스 변수 일 것입니다. – watt

3

컨트롤러에서 처리해야합니다. 경로는 사물이 어디로가는 지 결정하고 컨트롤러에 달려있어 거기에 갈 수 있는지 결정합니다.

ApplicationController에 누군가가 로그인했는지 확인하고 그렇지 않은 경우 로그인 페이지로 리디렉션하는 일반적인 용도의 authenticate 메소드가 있어야합니다. 그런 다음 특정 컨트롤러에서 :

before_filter :authenticate, :except => [ :this_one, :and_this_one ] 

뿐만 아니라 다른 옵션이 있습니다 자세한 내용은 Action Controller Overview의 필터 섹션을 참조하십시오

class SomethingController < ApplicationController 
    before_filter :authenticate 

    def handler 
    #... 
    end 
end 

당신은 :except 옵션을 사용하여 고유의 처리에 대한 인증을 건너 뛸 수 있습니다.

관련 문제