gpt4 book ai didi

ruby-on-rails - 如何使 before_action 在所有 Controller 和 Action 上运行,但一个除外?

转载 作者:行者123 更新时间:2023-12-03 10:50:21 24 4
gpt4 key购买 nike

我有一个 rails 4.2.x 应用程序,带有用于身份验证的设计 - 我有几个 Controller 。

我想要设备authenticate_user!方法在除主 Controller 索引操作之外的所有 Controller 和操作上运行。 (当然,authenticate_user!本身负责设计登录等操作)

我可以确保每个 Controller 操作都运行 application_controller.rb 中的 before_action:

class ApplicationController < ActionController::Base
before_action :authenticate_user!
...
end

我还可以限制所有 Controller 上的一组特定操作:
class ApplicationController < ActionController::Base
before_action :authenticate_user!, except: [:index]
...
end

但我不知道如何让 home/index 成为异常(exception)。

当然,我可以手动添加 before_action :authenticate_user!到每个 Controller ,并为索引操作添加一个异常(exception)到 home Controller 。但这不是很干,如果我添加新的 Controller ,我需要记住将这个 before_action 添加到每个 Controller 。

最佳答案

你要做的就是设置autheticate_user!在所有这样的 Controller 上:

class ApplicationController < ActionController::Base
before_action :authenticate_user!
...
end

然后在你的 HomeController 上你这样做:
class HomeController < ApplicationController
skip_before_action :authenticate_user!, only: [:index]
...
end

希望能帮到你 !

关于ruby-on-rails - 如何使 before_action 在所有 Controller 和 Action 上运行,但一个除外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36302866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com