【问题标题】:CanCan AccessDenied exception assigns the controller variableCanCan AccessDenied 异常分配控制器变量
【发布时间】:2015-09-15 12:04:39
【问题描述】:

我在我的应用程序中使用 CanCan。我正在测试我的控制器以查看它是否按预期运行。 在我的控制器中,手动检查了权限:

authorize!(:read, @booking)

它引发 CanCan::AccessDenied 异常,并重定向到我的 ApplicationController 中定义的 root_url。

我担心的是我正在测试它不应该将预订分配为变量:

expect(assigns[:booking]).to_not eq(booking)

但是,它确实分配了预订! 我想知道这个问题是否被称为未经授权的用户不应该收到有关他所要求内容的任何内部信息(即使它正在被重定向,他也可以在响应中看到它)

提前致谢!

【问题讨论】:

  • 如果您使用load_and_authorize_resource,它将在 before_filter 中分配变量。 Read here -> “它将使用前置过滤器将资源加载到实例变量中,并为每个操作授权它。”如果您使用load_resource,这也适用。
  • 但它仍在分配它。它不能解决问题。它仍在响应中。
  • 您在为该控制器使用load_and_authorize_resourceload_resource 吗?如果您不想分配它,请不要将这两个用于该控制器,或者您可以添加一个 except 块:即load_and_authorize_resource except: 'my_action'

标签: ruby-on-rails ruby-on-rails-4 exception rspec cancan


【解决方案1】:

回答我自己的问题。 CanCan 和 CanCanCan 是完全安全的。分配是 Rspec 管理的东西(欢迎提供更多信息)。回复中没有关于@booking 的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多