2013-03-12 1 views
1

내 사이트의 모든 페이지에는 사용자 인증이 필요합니다 (사용자는 액세스하려면 로그인해야합니다).모든 페이지에 대한 인증 작성

authenticated :user do 
    root :to => 'home#index' 
end 
root :to => redirect('/users/sign_in') 

가 어떻게이 매우 자연적인 기능을 얻을 수 있습니다

https://github.com/plataformatec/devise/wiki/How-To:-Require-authentication-for-all-pages

내가이 copiy-붙여 넣은 ... 내가 고안 문서에서 이것을 발견하지만 나를 위해 작동하는 것 같다하지 않습니다 ? 여기

+0

더 많은 부분을 설명 할 수 있습니까? 로그인 페이지로 리디렉션되지 않습니까? 경로 변경이 적용 되려면 서버를 다시 시작 했습니까? –

+0

로그인 페이지로 리디렉션되지 않습니다. 로그인하지 않고 모든 페이지에 액세스 할 수 있습니다. 예, 서버를 다시 시작했습니다. – rastko

+1

https://github.com/plataformatec/devise#controller-filters-hel-ers 당신은 그 전에 before_filter를 사용해야합니다 –

답변

1

내가 무슨 짓을 : app/controllers/application_controller.rb에서

는, 다음과 같은 줄을 추가

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 

    before_action :authenticate_user! 

    # ... 
end 

이 모든 행동 이전에 실행 authenticate_user!을 강제 할 것이다. 인증이 필요하지 않은 일부 작업/컨트롤러가있는 경우

, 당신은 자신의 컨트롤러 파일에 다음 줄을 추가 할 수 있습니다

class StaticPagesController < ApplicationController 
    prepend_before_filter :require_no_authentication 

    # ... 
end 

require_no_authentication 기능은 선택 사양 매개 변수를, only라는 이름의 배열, 여기에는 인증이 필요없는 작업 목록이 포함되어 있습니다.

n.b. 나는 이것이 진보 된 묘법임을 압니다. 그러나 질문에 답을 얻지 못했고 나는 정답을 쫓는 데 꽤 많은 시간을 보냈습니다.

+0

require_no_authentication 함수는 디바이스에서 상속 한 컨트롤러에서만 사용할 수 있다고 생각합니다. 다른 컨트롤러에서이 기능이 작동하지 않습니다. – TaimoorQ

관련 문제