Преглед изворни кода

fix: 特定情况下登录UI无法保存登录状态

数据库中存在cookie,登录头也有cookie,后者会被前者覆盖
Xwite пре 4 година
родитељ
комит
38b0795e2a
1 измењених фајлова са 6 додато и 0 уклоњено
  1. 6 0
      app/src/main/java/io/legado/app/data/entities/BaseSource.kt

+ 6 - 0
app/src/main/java/io/legado/app/data/entities/BaseSource.kt

@@ -95,11 +95,17 @@ interface BaseSource : JsExtensions {
      * 保存登录头部信息,map格式,访问时自动添加
      * 保存登录头部信息,map格式,访问时自动添加
      */
      */
     fun putLoginHeader(header: String) {
     fun putLoginHeader(header: String) {
+        val headerMap = GSON.fromJsonObject<Map<String, String>>(header).getOrNull()
+        val cookie = headerMap?.get("Cookie") ?: headerMap?.get("cookie")
+        cookie?.let {
+            CookieStore.replaceCookie(getKey(), it)
+        }
         CacheManager.put("loginHeader_${getKey()}", header)
         CacheManager.put("loginHeader_${getKey()}", header)
     }
     }
 
 
     fun removeLoginHeader() {
     fun removeLoginHeader() {
         CacheManager.delete("loginHeader_${getKey()}")
         CacheManager.delete("loginHeader_${getKey()}")
+        CookieStore.removeCookie(getKey())
     }
     }
 
 
     /**
     /**