2009-04-09 2 views
1

technoween에서 plugin restful_authentication을 설치하고 구현했습니다.restful_authentication이 컨트롤러 내의 작업에만 적용 되었습니까?

내 신청서는 대개의 경우 리뷰를 쓰는 경우를 제외하고는 공개 될 예정입니다.

그래서 reviews_controller.rb가 있지만, 사용자가 로그인했는지 여부를 신경 쓰고 싶은 유일한 시간은 특정 작업 add_review를 제출할 때입니다.

add_review는 벤더/쇼에 양식이 표시되므로 vendor_controller.rb에 대한 작업입니다. 그런 다음 업데이트를 표시하기 위해 vendor/show로 다시 리디렉션합니다 (이것을 ajax로 변경하려는 생각).

사람이 로그인하지 않은 경우 로그인/가입 페이지로 리디렉션하려고합니다.

restful_authentication에 대한 지침은 컨트롤러 수준에서 포함 AuthenticatedSystem을 적용하는 것을 보여 주지만 해당 컨트롤러의 다른 작업으로 인증하고 싶지는 않습니다.

어떻게하면됩니까?

class VendorsController < ApplicationController 
    include AuthenticatedSystem 
    before_filter :login_required, :only => [:add_review] 
end 

답변

4

은 당신이 그것을 필요로하는 컨트롤러에서 AuthenticatedSystem 모듈을 포함 (또는와 ApplicationController는 하나 이상의 것이 필요한 경우), 다음 before_filter를 사용은 당신이 원하는 행동, 예를 들어 적용 나는 당신이 당신 자신의 add_review 액션보다는 편안한 create 액션을 사용하도록 당부한다. 편안한 라우팅에 대해 자세히 알아 보려면 http://guides.rubyonrails.org/routing.html

+0

before_filter 또한 취할 수 있습니다. 조치에 인증이 없도록하려는 경우 매개 변수 제외. –

+0

의미 : except => [: 인증되지 않은 컨트롤러]? – AFG

+0

: except => [: non_authenticated_action] a before 필터는 컨트롤러 내의 모든 작업 (및 해당 컨트롤러를 서브 클래 싱하는 컨트롤러 내의 작업)에 적용됩니다. the : only/: 필터를보다 구체적으로 만들기위한 동작을 지정합니다. 추가 정보를 찾으려면 api.rubyonrails.org를 사용하십시오 – AdminMyServer

0

:

+0

기존 "create"를 사용 하시겠습니까? 나는 라우팅 섹션을 살펴 보았습니다 ... 내가 무엇을 찾고 있어야하는지 명확하지 않았습니다. 감사. – AFG

+0

예, 기존 작성을 사용하고 있습니다. 당신의 ReviewController에서 add_review 액션을 갖는 것은 표준에 반하는 것이며 단순히 create 액션을 사용하는 것보다 고통 스러울 것입니다. –

+0

그래서 이것은 바보 일지 모르지만 vendors_controller.rb (이와 유사한 기능에 대한 자습서) 내부에서 add_review 액션을 호출하고 있습니다 ... 페이지가 공급 업체 용 뷰이므로 ReviewController 내에 있지 않습니다. – AFG