gpt4 book ai didi

ruby-on-rails - Ruby on rails - Rack 中间件排除 - 可能吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:20:21 26 4
gpt4 key购买 nike

我正在尝试 Rack 中间件,在单独的层中进行身份验证。问题是,所有请求都经过这一层。我不希望 css、javascript 之类的 Assets 请求通过身份验证中间件。,我也不希望注销流程通过这个。,

在application.rb中

config.middleware.use AuthClient::MyFilterClass

我期待的是

config.middleware.use AuthClient::MyFilterClass, :exclude => [:logout,'*/assets/*']

有没有办法从中间件中排除自定义路径/操作?

最佳答案

Rack中间件形成一个上下栈,如下例:

rack middleware

这意味着无论您发出什么请求,它都会通过所有中间件。
所以你不能像这样排除中间件。

不过,您可以将自己的中间件注入(inject)堆栈,这将检查请求路径并调用其他中间件。

像这样:

class MyMiddleware
def initialize(app)
@app = app
end

def call(env)
if env['REQUEST_PATH'].match(/^\/assets\//)
middleware = AuthClient::MyFilterClass.new(@app)
env = middleware.call(env)
end

@app.call(env)
end
end

这将根据请求路径有条件地调用 AuthClient::MyFilterClass 中间件。

关于ruby-on-rails - Ruby on rails - Rack 中间件排除 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22198859/

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