android - 有没有办法防止 WebView 在重新加载时丢失 session 信息?

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

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

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

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

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

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

我可以设置 WebView 设置以使 session 在重新加载之间保持不变吗?

我已经在我们的 Apple 应用程序上实现了这一点,并且 Swift 中的 WebView 能够在每次刷新时保持 session Activity 。

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

----更新-----

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

我想知道 Chrome 应用程序是否会遇到同样的问题,所以我尝试在常规 Chrome 应用程序中登录服务提供商的网址。登录后,我尝试刷新 keep alive url 并且 session 信息是持久的。

最佳答案

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

关于android - 有没有办法防止 WebView 在重新加载时丢失 session 信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50846836/

相关文章:

android - native 应用程序之间的单点登录

Android中心和调整 WebView 中的图像

flask - 我可以避免意外创建 Google App Engine 实例吗?

java - FragmentManager 回收

java - Android fragment ,案例2首先加载

android - 如果 Activity 停止,则通知服务

android - 素材库(1.1.0-alpha08版本)BottomNavigationView的menuItem如何显示badge?

android - 如何检测android中webview是否存在缓存?

android - 替换 Android Mapview 以使用 WMS 服务

ios - 如何在 iOS 上的 Okta Mobile 中直接深度链接到应用程序