簡體   English   中英

Ruby on Rails以更優雅的方式來驗證用戶只能編輯自己的內容

[英]Ruby on rails more elegant way to authenticate that users can edit only their own content

我目前正在驗證用戶只能通過以下方式編輯自己的內容

@posts = current_user.posts.find(params[:id])

有沒有更簡單的方法可以在所有控制器上做到這一點?

我有一個before_filter,要求用戶必須登錄,但是它不檢查單個用戶是誰。

我想知道是否有一個更優雅的解決方案,只需要對before_filer方法進行一次編輯,而不是將current_user方法放在每個需要保護的模型之前。

CanCan是另一個提供授權功能的寶石。 所有這些都在一個ruby文件中進行管理,然后只需一行即可合並到控制器中。 還有許多視圖助手,因此可以使用<% if can? :update, @article %> <% if can? :update, @article %>在您的視圖中。

我在某個時候使用了一個框架,該框架可以讓您在查詢中添加強制條件,但是我認為Rails不可能(本來)做到這一點。 可能帶有插件。

但是,有時您將需要查詢單個用戶的上下文以外的內容,因此您需要一種方法來覆蓋它,可能使用before_filter的:except參數。 但是然后,您必須記住current_user在例外方法中確實需要針對用戶的事情,而忘記指定它可能非常危險。

通過以某種方式覆蓋模型的“查找”功能,您可以在絕大多數情況下節省一些鍵入內容,但是您還將使異常變得極為丑陋,並可能帶來危險。

你檢查過宙斯盾了嗎? 如果您不願意手工編碼,則可以檢查盾牌。 符合您的要求。 它也有大量的文檔。 http://github.com/makandra/aegis

看到這個:

暫無
暫無

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

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