有没有办法防止 WebView 在重新加载时丢失会话信息?
Is there a way to prevent a WebView from losing session information on reload?
因此,我被要求帮助将 Simple Saml SSO 集成到我们的移动应用程序中,但在登录我们的 Android 应用程序后,我遇到了保持会话活动的问题。
注意:我敢打赌有更好的方法可以做到这一点,但这就是我被指示实施它的方式。
我在主 activity 中创建了一个 WebView,用于加载服务提供商的网站。当用户正确登录时,服务提供商将 WebView 重定向到我们的应用程序特定的保持活动状态 url。然后将此 WebView 的可见性设置为隐藏,并使会话在 "background"
中保持活动状态
服务提供者提供了一个保持有效的到期日期,我们设置了一个计时器来将 WebView 安排到 reload/refresh,以便会话保持活动状态。
我注意到,在第一次重新加载 WebView 时,将重定向回服务提供商的登录 url。如果用户未登录,重定向是我们正在执行的 SSO 类型的正确行为。用户之前已成功登录,但在第一次重新加载时,就像 WebView 丢失了所有以前的会话 info/data.
我可以设置 WebView 设置以使会话在重新加载之间保持不变吗?
我已经在我们的 Apple 应用程序上实现了这个,Swift 中的 WebView 能够在每次刷新时保持会话活动。
我已经确认刷新前WebView的url是正确的keep alive url。
----更新-----
所以我尝试使用 WebView 的 evaluateJavascript 函数将 window 的位置设置为保持活动 url 并且发生了相同的会话信息丢失。然后我尝试调用 window 的位置重新加载功能,但仍然没有保存会话信息。
我想知道 Chrome 应用程序是否会遇到同样的问题,所以我尝试在常规 Chrome 应用程序中登录服务提供商的 url。登录后,我尝试刷新 keep alive url 并且会话信息是持久的。
我已经能够弄清楚这是我们用我们的测试服务提供商 URL 做的事情,并且在我们开始使用真正的服务提供商 URL 后就解决了。
因此,我被要求帮助将 Simple Saml SSO 集成到我们的移动应用程序中,但在登录我们的 Android 应用程序后,我遇到了保持会话活动的问题。
注意:我敢打赌有更好的方法可以做到这一点,但这就是我被指示实施它的方式。
我在主 activity 中创建了一个 WebView,用于加载服务提供商的网站。当用户正确登录时,服务提供商将 WebView 重定向到我们的应用程序特定的保持活动状态 url。然后将此 WebView 的可见性设置为隐藏,并使会话在 "background"
中保持活动状态服务提供者提供了一个保持有效的到期日期,我们设置了一个计时器来将 WebView 安排到 reload/refresh,以便会话保持活动状态。
我注意到,在第一次重新加载 WebView 时,将重定向回服务提供商的登录 url。如果用户未登录,重定向是我们正在执行的 SSO 类型的正确行为。用户之前已成功登录,但在第一次重新加载时,就像 WebView 丢失了所有以前的会话 info/data.
我可以设置 WebView 设置以使会话在重新加载之间保持不变吗?
我已经在我们的 Apple 应用程序上实现了这个,Swift 中的 WebView 能够在每次刷新时保持会话活动。
我已经确认刷新前WebView的url是正确的keep alive url。
----更新-----
所以我尝试使用 WebView 的 evaluateJavascript 函数将 window 的位置设置为保持活动 url 并且发生了相同的会话信息丢失。然后我尝试调用 window 的位置重新加载功能,但仍然没有保存会话信息。
我想知道 Chrome 应用程序是否会遇到同样的问题,所以我尝试在常规 Chrome 应用程序中登录服务提供商的 url。登录后,我尝试刷新 keep alive url 并且会话信息是持久的。
我已经能够弄清楚这是我们用我们的测试服务提供商 URL 做的事情,并且在我们开始使用真正的服务提供商 URL 后就解决了。