[英]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.