从 before_action 中排除控制器

Posted

技术标签:

【中文标题】从 before_action 中排除控制器【英文标题】:Exclude a controller from before_action 【发布时间】:2016-04-27 00:48:45 【问题描述】:

我正在使用before_action 过滤器调用authenticate,如果用户无权访问请求的页面,该方法会将用户重定向回其主页。

我想从这一步中排除一个页面,仅用于测试目的。

到目前为止,我所看到的是,我可以使用 except 来排除某些控制器操作,使其不受 before_action 过滤器的影响,例如:

before_action :authenticate, except: :demo_login

我也可以像这样一次排除多个操作:

before_action :authenticate, except [:demo_login, :demo_show]

如何排除特定控制器中的所有操作?

【问题讨论】:

【参考方案1】:

在相关控制器中使用skip_before_action :authenticate

此方法的格式与before_action 相同,因此如果您想跳过对特定控制器操作的调用:authenticate,请使用:

skip_before_action :authenticate, only: [:show, :index]

except: 关键字也可以使用。

【讨论】:

before 动作可能存在于继承的控制器中。有没有办法排除控制器而不是父控制器中的操作?

以上是关于从 before_action 中排除控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何从控制器 JSON 返回的实体字段中排除。 NestJS + Typeorm

阻止用户返回并查看以前提交的表单Rails

从控制器的结果集中排除列 |弹簧数据 jpa

从影响形式$ pristine中排除控制

如何在发布时排除控制器?

从 Grails 中的 Cobertura 报告中排除插件