1

我使用declarative_authorization和我有一個控制器的以下:爲什麼我不能訪問一個控制器的動作,我在Rails 3中將filter_access_to語句放在了外面?

filter_access_to :index, :new, :edit, :step, :create, :update, :destroy

有離開了兩個動作。 :show, :compare。但是,當我轉到這些操作的URL時,它會將我發送到登錄屏幕。

這是爲什麼?

由於該控制器上沒有其他過濾器(除了可能繼承自ApplicationsController的任何其他過濾器),否則不應該忽略掉的操作,讓我在未登錄時看到它?

回答

3

這不應該與declarative_authorization ...這是Devise的(或任何您的身份驗證機制)域。相反,修改before_filter來檢查用戶是否已通過身份驗證,以包含要跳過的操作的例外。

例如。將before_filter :authenticate_user!更改爲before_filter :authenticate_user!, :except=>[:public_action, :other_public_action]。另外,如果您的應用程序控制器中設置了before_filter,那麼您可以在控制器內部覆蓋它,使其發生異常並在其中生成模塊。

相關問題