【问题标题】:Authorizing Namespaced and Nested controllers using CanCan使用 CanCan 授权命名空间和嵌套控制器
【发布时间】:2012-09-08 20:49:16
【问题描述】:

我很难让 cancan 授权下面的新路线设置:

namespace :api do
namespace :v1 do
  resources :users do
    resources :user_songs
    resources :friendships
    resources :plays
    resources :likes
    resources :songs

我已经按照https://github.com/ryanb/cancan/wiki/Nested-Resources 此处发布的内容进行了操作,并使用 likes 控制器对其进行了测试,并将其放在上面:

class Api::V1::LikesController < Api::V1::BaseController

load_and_authorize_resource :user
load_and_authorize_resource :like, :through => :user

在ability.rb 中使用can :access, :all 有效,但我试图限制的其他任何东西都没有,例如:

can :access, :likes
can :access, Like
can :access, :users
can :access, User
can :access, [:"users/likes", :users_likes]

我不太确定是不是因为命名空间路由。任何指导将不胜感激!

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 cancan


    【解决方案1】:

    找到了答案:毕竟是命名空间,它只需要一个

    can :access, "api/v1/likes"

    【讨论】:

    • 似乎这仅适用于获取请求,而不适用于添加的发布请求可以 :create, "api/v1/likes" 以查看它是否重要并且没有任何区别。
    • 发现它需要一个罐头 :access, :likes 在它的正下方才能工作。
    • 这有一个错误,但它是fixed in 1.6.10
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多