Ruby on rails Rails-API Restfull-Allow-only-GET

Ruby on rails Rails-API Restfull-Allow-only-GET,ruby-on-rails,rest,Ruby On Rails,Rest,我有一个带有用户身份验证的API,我想拒绝客户端用户对POST/PUT/DELETE的访问(只有管理员用户可以这样做) 1-如何设置此设置 2-如果我想在整个应用程序中使用这些规则,我必须将这些规则放在哪里?如果您将其放在routes文件中,则应该可以使用这些规则,其中books将是您想要拒绝用户对其进行更新/删除访问的模型。您可以为管理员用户命名api的名称空间以允许访问。我在很多代码中成功地使用了这种方法 resources :books, except: :update, :delete

我有一个带有用户身份验证的API,我想拒绝客户端用户对POST/PUT/DELETE的访问(只有管理员用户可以这样做)

1-如何设置此设置


2-如果我想在整个应用程序中使用这些规则,我必须将这些规则放在哪里?

如果您将其放在routes文件中,则应该可以使用这些规则,其中books将是您想要拒绝用户对其进行更新/删除访问的模型。您可以为管理员用户命名api的名称空间以允许访问。我在很多代码中成功地使用了这种方法

resources :books, except: :update, :delete


namespace "admin" do
  resources :books
end
<>你应该考虑使用GEM。通过这种方式,您可以在授权文件夹中定义,除非用户是“管理员”,否则无法:创建、更新或:删除用户

它在app/models/ability.rb中看起来像这样

def initialize(user)
       user ||= User.new # guest user (not logged in)
       if user.role == "admin"
         can :manage, :all
       else
         can :read, :all        
         cannot [:create, :update, :destroy], User         
       end
  end   

然后,在创建用户的控制器中,只需添加
授权\u资源

,但在这种情况下,它将拒绝所有用户,对吗?我只需要为普通用户设置块。我刚刚更新了我的答案,以反映在路由文件中使用名称空间的情况。@Acacia给了你答案。学习使用cancan并将其插入你的应用程序。谢谢大家,我会尽快发布结果。这也是一个非常好的选择。我在一个项目中使用了它,但忘记了。