[英]how to let users only edit/delete their own items? 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.