我想在Rails中设计一个API,要求对某些控制器只读取创建,更新和删除等操作,并向其他人开放(例如,对文章的评论应该是开放的,但编辑该文章应该要求API身份验证)
我知道如何进行身份验证部分,我不知道该怎么做才是"只读"部分或者"您有权创建评论但不能删除评论"一部分。
是否有任何资源,提示,技巧或github存储库可以执行此操作或类似的操作?
答案 0 :(得分:0)
您需要进行授权。请看Pundit的可扩展解决方案https://github.com/elabs/pundit
我有一段时间的应用只需要一点点控制,因为在2个控制器上只有少数方法是有限的。对于那些我刚刚创建了一个before_filter和方法来控制授权。
下面的代码允许每个人都做索引,只允许具有值为“admin”的角色属性的用户在控制器中执行任何其他操作。您还可以选择引发未经授权的错误或引发错误消息,而不是重定向。在房子的安全方面写有文章(可能是书籍),如果他们没有被授权做某事,你是否应该通知用户(这意味着他们可以推断出某人可以在uri做什么)< / p>
SomeController < ApplicationController
before_filter check_authorized, except [:index]
def index
....stuff that everyone can do
end
def delete
....stuff only admin can do
end
private
def check_authorized
redirect_to root_path unless current_user.admin?
end
end
当然,您需要设备上的设计或current_user方法和方法来检查管理员
class User < ActiveRecord::Base
def admin?
if self.role == "admin"
true
else
false
end
end
end