2016-01-25 18 views
0

我目前正在保護我的應用程序,以便普通用戶無法使用CanCanCan創建,編輯,更新或銷燬某些對象。我也安裝了Devise。這兩個寶石都提供回調,以便用戶不能執行某些操作,除非滿足某個標準。如果CanCan回調存在,我是否需要Devise回調?

class ExampleController < ApplicationController 
    before_action :authenticate_user!, except: [:index, :show] # Devise 
    load_and_authorize_resource except: [:index, :show] # CanCanCan 
end 

在這種特殊情況下,用戶只能擁有完全訪問權限,如果他們是管理員。我在想,如果在控制器中存在兩個回調會是多餘的。

我看到它的方式是,如果用戶不是管理員,並且正在嘗試創建一個對象,那麼將不需要對它們進行身份驗證。我希望100%確信自己的想法,並確保用戶可以執行任何偷偷摸摸的解決方法來訪問這些頁面。

回答

1

是的,這兩者都需要。 設計回調將保證用戶已註冊,如果沒有,它將拋出未經身份驗證的錯誤。並且CanCanCan將保證您的用戶有能力進行更改,否則會拋出未經授權的錯誤。

正確的瞭解兩者相符,但稍後你可能會改變你的能力,那麼你不應該改變控制器,最好從一開始就這樣做。

編輯:我忘了提及它,但有兩個不同的錯誤可以讓你以不同的方式處理它們。例如,請求未經身份驗證的用戶登錄,並且未經授權的用戶停止與您的應用程序混淆(或者直接登錄)

相關問題