0

레일 4 프로젝트에서, 내가 만든 블로어가 있습니다. Rails Guides 그런 다음 내 앱에 마운트합니다. 모두 문제없이 잘됩니다.탑재 된 엔진 내에서 선언적 승인을 사용할 때 리디렉션 오류가 발생했습니다.

현재 응용 프로그램은 declarative_authorization을 사용합니다. 그것은 내 응용 프로그램 내에서 잘 작동합니다. filter_resource_access 엔진 컨트롤러에서 리디렉션 오류가 발생합니다. 허가 후

로그인 거부 :

: Redirected to http://0.0.0.0:3000/blog/ 
: Filter chain halted as :filter_access_filter rendered or redirected 
: Completed 302 Found in 3ms (ActiveRecord: 0.3ms) 

고마워합니다.

일부 코드 : 엔진 application_controller.rb

module Blorgh 
    class ApplicationController < ActionController::ApplicationController 
    end 
end 

엔진 posts_controller.rb

module Blorgh 
    class PostsController < ApplicationController 
    before_action :set_post, only: [:show, :edit, :update, :destroy]  
    filter_resource_access 
... 

엔진 routes.rb

Blorgh::Engine.routes.draw do 
    resources :posts do 
     resources :comments 
    end 
    root to: "posts#index" 
end 

응용 프로그램

routes.rb
mount Blorgh::Engine, at: "/blog" 

엔진의 filter_resource_access를 제외하고 모든 것이 평범하지 않습니다. 엔진 컨트롤러의 current_user.inspect는 올바른 출력을 반환합니다. 이는 엔진을 통해 응용 프로그램의 메서드에 액세스 할 수 있음을 의미합니다. filter_resource_access가 권한 거부를 반환 할 때 사용자를 응용 프로그램 홈으로 리디렉션하는 방법을 알아야합니다.

더 많은 코드가 필요하면 알려주십시오.

다시 한번 감사드립니다.

+0

당신에게 실제 코드를 게시하고 싶을 수도 있습니다. 당신이 말한 것에서 무슨 일이 일어나고 있는지 짐작하기는 어렵습니다. – Nikolay

답변

1

좋아, 리디렉션을위한 해결책을 찾았습니다. application_controller.rb에서

: 하나 같은 문제가 경우

(주요 응용 프로그램의 application_controller.rb)를 root_url에 main_app를 추가

before_filter { |c| Authorization.current_user = c.current_user } 
    def permission_denied 
    flash[:error] = "Sorry, you are not allowed to access that page."; 
    redirect_to main_app.root_url 
    end 

환호를