Rails 5 Api 每次只有 React Native 新会话 ID

Posted

技术标签:

【中文标题】Rails 5 Api 每次只有 React Native 新会话 ID【英文标题】:Rails 5 Api Only with React Native New Session Id Each Time 【发布时间】:2019-01-12 03:25:54 【问题描述】: 适用于 android 的 React Native V 0.56 仅限 Rails 5.1.3 API

我的 Rails 应用程序能够保持会话,但在将 React Native 升级到 0.56 后,Rails 会在每次 api 请求时创建一个新会话。

无法理解为什么每次都会重置会话。

我的 application.rb 看起来像这样

module AppService
    class Application < Rails::Application
        config.load_defaults 5.1
        config.middleware.use ActionDispatch::Flash
        config.middleware.use Rack::MethodOverride
        config.middleware.use ActionDispatch::Cookies

        config.api_only = true
        config.middleware.use ActionDispatch::Session::CookieStore, key: '_namespace_key'
    end
end

有人可以指出可能是什么问题吗? 我该如何调试?

更新 深入挖掘我遇到了这个 https://github.com/facebook/react-native/pull/19770

似乎这是 RN 0.56 的错误。有人可以建议如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

我遇到了一个非常相似的问题,问题是,作为 React Native V 0.56 升级的一部分,我还必须将我的 nodejs 版本升级到 8。在 node8 中(甚至可能在以前的版本中)fetch() 需要 @987654324 @ 选项发送带有请求的 cookie。您的请求中没有会话 cookie 可能是您的服务器每次都创建新会话的原因。

fetch(url, method: 'GET', credentials: 'include' )

这个SO question and answers 可能会更深入地了解问题和解决方案。

【讨论】:

对我来说,这适用于 android 而不是 ios 对于其他读者,此问题再次出现在最新版本,即 iOS 中的 0.57 RN。更多信息在这里.. ***.com/questions/54163056/…

以上是关于Rails 5 Api 每次只有 React Native 新会话 ID的主要内容,如果未能解决你的问题,请参考以下文章

Rails 6 API + React + Google login:登录后如何授权用户访问某些服务器路由?

如何在 ActionCable rails-5-api 应用程序中获取 current_user?

无法从 react-admin 访问由 rails 开发的 API

根据我在 rails/react 应用程序上的 api 调用状态更新我的视图

在 Heroku 上使用 Rails API 部署 Create-React-App

如何使用 react_on_rails 的 Redux API 为商店补充水分?