Rails Turbo render_async:将 JWT 添加到异步请求

Posted

技术标签:

【中文标题】Rails Turbo render_async:将 JWT 添加到异步请求【英文标题】:Rails Turbo render_async: add JWT to async requests 【发布时间】:2021-11-17 03:26:16 【问题描述】:

我在带有turbo-rails 的Rails 应用程序中使用render_async,并尝试将JWT 添加到render_async 请求标头。

我的 application.rb 中有以下内容:

RenderAsync.configure do |config|
  config.turbo = true
end

这是一个调用示例(它是循环的一部分):

<%= render_async customer_activity_path(:customer => customer.id), html_options:  'data-turbo-track': 'reload'  do %>
        <div class="loader"></div>
        <div class="eventDetails">Loading... </div>
      <% end %>
<%= content_for :render_async %>
    

我正在使用相同的 .js 文件加载 Turbo:https://github.com/kirillplatonov/shopify-hotwire-sample/blob/main/app/javascript/shopify_app/shopify_app.js

而 html 包装器是:https://github.com/kirillplatonov/shopify-hotwire-sample/blob/main/app/views/layouts/embedded_app.html.erb

除了 turbo:before-fetch-request 之外,我尝试在 shopify_app.js 中添加第二个侦听器 turbo:load,但这并没有做任何事情。

我在 Chrome Inspect 中看到 render_async 调用由 Turbo 处理,但它返回 401 Unauthorized,我可以看到 JWT Bearer 证书不在 render_async GET 请求标头中。我还可以看到 JWT Bearer 证书在标准 GET 请求中,用于加载包含 render_async 调用循环的页面。

对于如何将 JWT Bearer 证书添加到使用 Turbo 的 render_async 调用的 http get 标头,我将不胜感激。

【问题讨论】:

【参考方案1】:

我已经从使用 render_async 切换到 Turbo Frames,这样我就可以在每个 Turbo Frame 请求的标头中包含 JWT 以增量方式将大量数据加载到网站页面上。

【讨论】:

以上是关于Rails Turbo render_async:将 JWT 添加到异步请求的主要内容,如果未能解决你的问题,请参考以下文章

Rails bundle install 在任何源中都找不到 turbo-rails-7.1.1

Rails 5:如何将 $(document).ready() 与 turbo-links 一起使用

如何将这个 React 库与 React-Rails 一起使用

Coffeescript 和 jQuery 无法在特定视图上使用 Ruby on Rails

Turbolinks 不适用于 Rails 4.2.4 Ruby 2.2.4 中的 bootstrap select2

Turbo基于MATLAB的turbo编译码算法的仿真