我在已安装的引擎中使用声明式授权时出现重定向错误

时间:2013-12-12 01:51:46

标签: ruby-on-rails ruby-on-rails-4 declarative-authorization

在我的Rails 4项目中,我有一个基于Rails Guides制作的引擎Blorgh 然后我将它安装到我的应用程序中。一切都很好,没有问题。

我当前的应用程序使用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)

谢谢你们。

部分代码: engine application_controller.rb

module Blorgh
  class ApplicationController < ActionController::ApplicationController
  end
end

engine posts_controller.rb

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

engine routes.rb

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

Application routes.rb

 mount Blorgh::Engine, at: "/blog"

除了引擎中的filter_resource_access之外,一切都是开箱即用的。引擎控制器中的current_user.inspect返回正确的输出,这意味着我可以通过引擎访问Application中的方法。当filter_resource_access返回权限被拒绝时,只需要了解如何将用户重定向到Application Home。

如果您需要更多代码,请与我们联系。

再次感谢。

1 个答案:

答案 0 :(得分:1)

好的,我找到了重定向的解决方案。

如果任何人有同样的问题:

application_controller.rb中的

:将main_app添加到root_url(主应用程序的application_controller.rb)

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

欢呼声