【问题标题】:Is there a way to prevent a WebView from losing session information on reload?有没有办法防止 WebView 在重新加载时丢失会话信息?
【发布时间】:2018-06-13 21:54:15
【问题描述】:

因此,我被要求帮助将 Simple Saml SSO 集成到我们的移动应用程序中,但在登录我们的 Android 应用程序后,我遇到了保持会话活动的问题。

注意:我敢打赌有更好的方法来做到这一点,但这是我被指示实施它的方式。

我在加载服务提供商站点的主要活动中创建了一个 WebView。当用户正确登录时,WebView 然后由服务提供者重定向到特定于我们应用程序的保持活动 URL。然后将此 WebView 的可见性设置为隐藏,并使会话在“后台”中保持活动状态

服务提供者提供了一个保持活动的到期日期,我们设置了一个计时器来安排 WebView 重新加载/刷新,以便会话保持活动状态。

我注意到的是,在第一次重新加载 WebView 时将重定向回服务提供者的登录 url。如果用户未登录,重定向是我们正在执行的 SSO 类型的正确行为。用户之前已成功登录,但在第一次重新加载时,就像 WebView 丢失了所有以前的会话信息/数据。

是否可以设置 WebView 设置以使会话在重新加载之间保持持久?

我已经在我们的 Apple 应用上实现了这一点,Swift 中的 WebView 能够在每次刷新时保持会话处于活动状态。

我已确认刷新前 WebView 的 url 是正确的保持活动 url。

----更新-----

所以我尝试使用 WebView 的 evaluateJavascript 函数将窗口的位置设置为保持活动的 url,并且会发生相同的会话信息丢失。然后我尝试调用窗口的位置重新加载函数,仍然没有保存会话信息。

我想知道 Chrome 应用程序是否会出现同样的问题,所以我尝试在常规 Chrome 应用程序中登录服务提供商的 url。登录后,我尝试刷新保持活动 url,会话信息是持久的。

【问题讨论】:

    标签: android android-webview single-sign-on saml


    【解决方案1】:

    我已经能够弄清楚这是我们对测试服务提供者的 URL 所做的事情,并且在我们开始使用真正的服务提供者的 URL 后已经解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 2015-11-09
      • 2019-08-21
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多