如何只读取API控制器操作

时间:2014-04-28 01:09:08

标签: ruby-on-rails api-design

我想在Rails中设计一个API,要求对某些控制器只读取创建,更新和删除等操作,并向其他人开放(例如,对文章的评论应该是开放的,但编辑该文章应该要求API身份验证)

我知道如何进行身份验证部分,我不知道该怎么做才是"只读"部分或者"您有权创建评论但不能删除评论"一部分。

是否有任何资源,提示,技巧或github存储库可以执行此操作或类似的操作?

1 个答案:

答案 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