我目前認證用戶可編輯自己的內容僅由:Ruby on Rails的更優雅的方式來驗證用戶只可以編輯自己的內容
@posts = current_user.posts.find(params[:id])
是否有更簡單的方式,可以做到這一點所有控制器?
我有一個before_filter,要求用戶必須登錄,但它不檢查個人用戶是誰。
我想知道是否有更優雅的解決方案,只需要對before_filer方法進行一次編輯,而不是在每個需要保護的模型之前放置current_user方法。
我目前認證用戶可編輯自己的內容僅由:Ruby on Rails的更優雅的方式來驗證用戶只可以編輯自己的內容
@posts = current_user.posts.find(params[:id])
是否有更簡單的方式,可以做到這一點所有控制器?
我有一個before_filter,要求用戶必須登錄,但它不檢查個人用戶是誰。
我想知道是否有更優雅的解決方案,只需要對before_filer方法進行一次編輯,而不是在每個需要保護的模型之前放置current_user方法。
我在某個時候使用了一個框架,可以讓您在查詢中添加強制性條件,但我認爲這對於Rails來說不是(本地)可能的。可能帶有插件。
但是,有時您會希望超出單個用戶的上下文進行查詢,因此您需要重寫該方法,可能使用before_filter的:except參數。但是你必須記住current_user在例外方法中的東西,做需要用戶特定的,忘記指定它可能是非常危險的。
通過以某種方式覆蓋模型的查找功能,您可以爲絕大多數情況保存一點點打字,但是您也會使例外非常難看且具有潛在危險。
你有沒有簽出盾牌?如果你不願意手動編寫代碼,那麼你可以檢查出盾牌。滿足你的要求。它也有大量的文檔。 http://github.com/makandra/aegis
看到這個:
CanCan是另一種寶石,提供授權功能。它全部由一個ruby文件管理,然後可以通過一條線路集成到控制器中。還有一些視圖助手,因此您可以在視圖中使用<% if can? :update, @article %>
。