簡體   English   中英

Rails 3.2 - 在CanCan中訪問自定義操作的拒絕例外 - 但僅限於生產中

[英]Rails 3.2 - Access denied exception for custom action in CanCan - but only in production

我在Rails(3.2.13)上使用Ruby(1.9),使用設計和cancan進行身份驗證和授權。 我在控制器中有一個自定義操作,可以在開發環境中正確地與匿名用戶一起使用。 當我在Heroku中部署它時,同一頁面拋出了“未授權”錯誤。 我在本地設置RAILS_ENV =生產,我得到了同樣的錯誤。 但是當我將RAILS_ENV設置回開發時,它開始正常工作。

我沒有看到CanCan特有的環境配置。 從文檔和示例中,看起來我不需要做任何其他工作。 有人可以幫忙嗎? 這是代碼:

配置/ routes.rb中

...
resources :venues do
    ...
    ...
    collection do
      get 'testaction'
    end
...

車型/ ability.rb

class Ability
  include CanCan::Ability
  def initialize(user)
    user ||= User.new # guest user
    if user.role? :admin
        can :manage, :all
    else
        can :testaction, Venue
    end
  end
end

控制器/ venues_controller.rb

class VenuesController < ApplicationController
    before_filter :authenticate_user!, :except => [:testaction] #tried with & w/o this line
    load_and_authorize_resource

    def testaction
        respond_to do |format|
            format.html
        end 
    end
    ...
    ...
end

我還嘗試在members下添加自定義操作而不是路由中的collections ,但行為是相同的。

謝謝!

我也遇到了與用戶類似的錯誤,然后我找到了一個很好的工作存儲庫,用於了解cancan的流程以及用於授權和驗證角色的設計。

請按照存儲庫提供的說明進行操作,並按步驟匹配您的代碼步驟。

https://github.com/RailsApps/rails3-bootstrap-devise-cancan

我建議使用authorize_resource :class => false或在控制器中enter code here而不是load_and_authorize_resource 我認為它會對你有所幫助。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM