0

비공개 베타 테스트를 위해 선택한 개인에게 신청서를 제출하고 싶습니다. 이 작업의 하위 도메인은 beta.company.com입니다.레일즈 3 서브 도메인

응용 프로그램은 내 워크 스테이션에서 예상대로 작동하지만 응용 프로그램을 서버로 밀어 넣으면 응용 프로그램이 인증 페이지로 계속 라우팅됩니다. 참고로 저는 선언적 승인, authlogic 및 Passenger를 사용하고 있습니다.

routes.rb :

#Application controller 
    match "/not_authorized", :to => "application#not_authorized", :as => :not_authorized 

    #UserSessions controller 
    match "/quit", :to => "user_sessions#destroy", :as => :quit 
    match "/authenticate", :to => "user_sessions#new", :as => :authenticate 
    resources :user_sessions, :only => :create 

    #Users controller 
    match "/enroll", :to => "users#new", :as => :enroll 

    # root url 
    root :to => "users#index" 

증상 :

  • 익명 경로 (예를 들어 user_sessions 번호가 not_authorized 생성) 익명에 대한 예상대로 작동합니다. HTML 권한으로 UsersController 번호 지수에 의해

    처리 거부 : 나는 production.log 볼 때 사용자

  • 응용 프로그램 내 워크 스테이션

예상 동작하므로 내가 좋아하는 항목이 참조 : # @role_symbols = [: guest]> (역할 [: guest], 권한 [: 색인, : 읽기, : 관리], 컨텍스트 : 사용자)에 대한 색인과 일치하는 규칙이 없습니다. 는하는 UsersController 번호 지수 액션이없는 한 경우 http://beta.company.com/authenticate

** 편집 **

에 옴과이 있다면, 익명 사용자는에 액세스 할 수없는 것입니다. 나는 왜 그것이 루트 인증 대신 성공해야하는지에 대해 혼란 스럽다.

이것은 하위 도메인 별 라우팅 문제와 비슷하지만 확실하지 않습니다.

이 '오류'를 자세히 읽습니다. UserController # index 액션이 있고 익명의 사용자는 액세스 할 수 없어야합니다. 언뜻 보면 UserSessionController # index (존재하지 않는 작업)를 읽은 것으로 생각했습니다.

이제 인증 된 사용자가 생성되거나 저장되지 않아서 UserSession # new action (AKA authenticate path)으로 다시 라우팅되는 것 같습니다.

# cookie store 
# MyApp::Application.config.session_store :cookie_store, :key => '_myApp_session' 
# active-record store 
MyApp::Application.config.session_store :active_record_store 

추가 테이블 :

**/편집 **

** 편집 II **

나는 active_record_store하는 cookie_store 변경 ($ 레이크 DB : 세션 : 생성) ($ rake db : migrate), Apache ($ touch tmp/restart.txt)를 다시 시작하고 브라우저의 캐시를 비운 다음 브라우저를 다시 시작했습니다.

세션이 세션 테이블에 성공적으로 추가되었지만 여전히 문제가 발생합니다.

**/편집 II **

생각이 크게 감사하고 있습니다.하나

우선 들어

답변

0

문제는 컨트롤러의 SELECT 문과 관련이 있습니다. SELECT 문에서 테이블 이름 "SELECT Users. *"의 대/소문자 구분은 오류의 원인입니다. 어떤 이유로이 오류는 production.log 파일에 포함되지 않았습니다. Capistrano를 사용하지 않는 후속 배포에서는이 오류를 production.log 파일에 포함시킬 수있는 기능을 수행했습니다.

지금, 난 그냥 '뭔가'라고 ...

0

...

은 UsersController 번호 인덱스 작업이 아니며,이 있다면, 익명 사용자는에 액세스 할 수없는 것입니다. 나는 왜 그것이 루트 인증 대신 성공해야하는지에 대해 혼란 스럽다.

# root url 
root :to => "users#index" 

확인하면 베타 도메인에 쿠키를 설정하고 있는지 확인하기 :

루트 URL은 UsersController # 지수입니다. 경로가 아닌 전체 URL (user_url(@user)user_path(@user))을 사용하는 링크를 리디렉션하거나 설정하면 루트 도메인에 대해 곧장 이동할 수 있습니다.

+0

내가 밀접하게 충분한 로그를 읽어 보지 않았 생각 결정할 수 있다면 - 게시물을 편집했다. 베타 도메인에 쿠키를 설정하려면 어떻게해야합니까? (지금하고있는 것과 달라야합니다.) 성공적인 인증은 'root_url'로 라우트됩니다. 대신에 users_path로 라우팅하는 것이 좋습니다. 맞습니까? – craig

+0

은 session_store.rb를 MyApp :: Application.config.session_store : cookie_store, : key => '_MyApp_session', : domain => : all으로 구성했습니다. 변경 없음. – craig