From 549e1faa09464eeda591b7db35d9173a35bb3f63 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Tue, 6 Jan 2026 17:37:51 +0800 Subject: [PATCH] :bug: Multiple workspace access authentication error https://github.com/siyuan-note/siyuan/issues/16786 Signed-off-by: Daniel <845765@qq.com> --- kernel/model/conf.go | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/kernel/model/conf.go b/kernel/model/conf.go index 6871f946a..960c4e44a 100644 --- a/kernel/model/conf.go +++ b/kernel/model/conf.go @@ -587,8 +587,13 @@ func InitConf() { Conf.DataIndexState = 0 - if "" == Conf.CookieKey { - Conf.CookieKey = gulu.Rand.String(16) + if cookieKey := readCookieKey(); "" != cookieKey { + Conf.CookieKey = cookieKey + } else { + if "" == Conf.CookieKey { + Conf.CookieKey = gulu.Rand.String(16) + } + writeCookieKey(Conf.CookieKey) } Conf.Save() @@ -600,6 +605,33 @@ func InitConf() { go util.InitTesseract() } +func readCookieKey() (cookieKey string) { + cookieKeyPath := filepath.Join(util.HomeDir, ".config", "siyuan", "cookie.key") + if !gulu.File.IsExist(cookieKeyPath) { + return + } + + data, err := os.ReadFile(cookieKeyPath) + if err != nil { + logging.LogErrorf("read cookie key file [%s] failed: %s", cookieKeyPath, err) + return + } + + cookieKey = string(bytes.TrimSpace(data)) + return +} + +func writeCookieKey(cookieKey string) { + cookieKeyPath := filepath.Join(util.HomeDir, ".config", "siyuan", "cookie.key") + if gulu.File.IsExist(cookieKeyPath) { + return + } + + if err := os.WriteFile(cookieKeyPath, []byte(cookieKey), 0644); err != nil { + logging.LogErrorf("save cookie key file [%s] failed: %s", cookieKeyPath, err) + } +} + func initLang() { p := filepath.Join(util.WorkingDir, "appearance", "langs") dir, err := os.Open(p)