From 407fd016bcd185f32d28fde3b4f3abc34aa7e5e4 Mon Sep 17 00:00:00 2001 From: gedoor Date: Mon, 23 Aug 2021 20:31:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=92=8C=E7=99=BB=E5=BD=95=E4=BF=A1=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=92=8C=E8=8E=B7=E5=8F=96,=E5=8F=AF?= =?UTF-8?q?=E5=9C=A8js=E9=87=8C=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/data/entities/BaseSource.kt | 40 ++++++++++++++++--- .../app/ui/book/login/SourceLoginDialog.kt | 2 +- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt index afe1def27..0fc435801 100644 --- a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt @@ -11,12 +11,18 @@ import io.legado.app.utils.GSON import io.legado.app.utils.fromJsonObject import javax.script.SimpleBindings +/** + * 可在js里调用,source.xxx() + */ interface BaseSource : JsExtensions { fun getStoreUrl(): String var header: String? + /** + * 解析header规则 + */ fun getHeaderMap() = HashMap().apply { this[AppConst.UA_NAME] = AppConfig.userAgent header?.let { @@ -34,24 +40,46 @@ interface BaseSource : JsExtensions { } } + /** + * 获取用于登录的头部信息 + */ fun getLoginHeader(): Map? { - val cache = CacheManager.get("login_${getStoreUrl()}") ?: return null + val cache = CacheManager.get("loginHeader_${getStoreUrl()}") ?: return null + return GSON.fromJsonObject(cache) + } + + /** + * 保存登录头部信息,map格式,访问时自动添加 + */ + fun putLoginHeader(header: String) { + CacheManager.put("loginHeader_${getStoreUrl()}", header) + } + + /** + * 获取用户信息,可以用来登录 + * 用户信息采用aes加密存储 + */ + fun getLoginInfo(): Map? { + val cache = CacheManager.get("userInfo_${getStoreUrl()}") ?: return null val byteArrayB = Base64.decode(cache, Base64.DEFAULT) val byteArrayA = EncoderUtils.decryptAES(byteArrayB, AppConst.androidId.toByteArray()) ?: return null - val headerStr = String(byteArrayA) - return GSON.fromJsonObject(headerStr) + val info = String(byteArrayA) + return GSON.fromJsonObject(info) } - fun putLoginHeader(header: String) { + /** + * 保存用户信息,aes加密 + */ + fun putLoginInfo(info: String) { val data = Base64.encodeToString( EncoderUtils.decryptAES( - header.toByteArray(), + info.toByteArray(), AppConst.androidId.toByteArray() ), Base64.DEFAULT ) - CacheManager.put("login_${getStoreUrl()}", data) + CacheManager.put("userInfo_${getStoreUrl()}", data) } /** diff --git a/app/src/main/java/io/legado/app/ui/book/login/SourceLoginDialog.kt b/app/src/main/java/io/legado/app/ui/book/login/SourceLoginDialog.kt index bed0799b5..9e748f9db 100644 --- a/app/src/main/java/io/legado/app/ui/book/login/SourceLoginDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/login/SourceLoginDialog.kt @@ -76,7 +76,7 @@ class SourceLoginDialog : BaseDialogFragment() { } } } - bookSource.putLoginHeader(GSON.toJson(loginData)) + bookSource.putLoginInfo(GSON.toJson(loginData)) } } return@setOnMenuItemClickListener true