在rails中,我有一个定义http_basic_authentication_with
的基本控制器,我希望在子类中有一个特定的路由跳过它,这类似于我如何指定一个控制器skip_before_filter
,这可能吗?
我的基本控制器看起来像这样:
class BaseController < ApplicationController
http_basic_authenticate_with name: "name", password: "password"
end
我有一个控制器继承了它:
class HomeController < BaseController
def index
end
def no_auth
end
end
我希望“index”需要基本的auth,而“no_auth”不需要。
谢谢!
2条答案
按热度按时间lnvxswe21#
我会这么做。
让我们用我们自己的类方法替换
http_basic_authenticate_with
,我们称之为auth_setup
。因为我们不想在每个子类中调用它,所以我们可以只提取其他方法的参数,我们称之为auth_params。
从现在开始,我们可以使用这个方法来修改我们子类中的auth参数,例如:
然而,Ruby类定义中的方法调用不是继承的(很容易忘记 * Rails风格的东西 *)。根据
http_basic_authenticate_with
的实现,您将需要另一个修复-inherited
回调。希望能有所帮助!
qyswt5oh2#