分享代码片段实现简单锁定笔记

这个功能是根据这两个帖子思源可以像 OneNote 一样锁定笔记本吗思源是否可以添加笔记本密码功能的需求开发的,主要解决防止别人误点击进入自己的私有笔记的问题,解决办法就是针对私有笔记打开时要求输入密码,然后一段时间后自动锁定笔记。

先上效果:

r46.gif

功能简介:

  1. 支持给多个笔记添加不同的密码
  2. 可自定义多少秒内无需再输入密码
  3. 锁定期间会忽略搜索和引用搜索(锁定或解锁后 30 秒后生效,这是思源忽略文件延迟决定的)

使用方法:

  1. 把下面的代码放到 js 代码片段中即可
  2. 配置要加密笔记的密码,在代码片段中修改 lockNotes 参数,这是一个对象,前面是笔记 ID,后面是笔记密码,然后配置 keepTime 参数,这个参数代表多少秒内不再提示输入密码,默认 60 秒,如果想用分钟,乘 60 即可,比如,10 分钟就是 const keepTime = 10*60
    笔记 ID 怎么复制呢?笔记上右键 => 设置 => 打开的对话框中最顶部点击“复制 ID”即可
  3. 然后刷新或重启思源即可。

完整代码如下:

其他说明:

关于限制,锁定后限制其他笔记搜索或引用或间接打开查看等问题,这是个很复杂的问题。

脚本中已实现搜索和引用搜索无法查看的问题(根据搜索引用搜索忽略文件实现的)。

但以下功能尚未实现:

  1. 强制打开,比如已知道链接可强制打开
  2. 已引用预览,已引用的文件可预览并打开
  3. 已嵌入内容的禁止查看,已嵌入的文件可以直接查看
  4. 锁定时自动关闭已打开的文件

不过,我觉得这些功能一般用不到。试想,既然是私密的文件,一般打开会随时关闭吧,更不会到处引用到外部,既然引用了就说明这个文档并不重要或不私密,更不会直接嵌入到外部文档中。所以,综合考虑,加上这些功能实现的复杂度,该脚本暂不支持这些功能。

不过,这里有些思路,如果你想实现可以参考一下,比如,强制打开可以监听打开状态变化或者通过 siyuan 内置对象监听内容变化,然后发现文件在目标笔记内则强制关闭;已引用预览和打开类似都能监听;已嵌入的文本,我觉得可以监听当前激活文档,发现激活文档中有目标笔记的块时则替换为禁止字样;锁定时关闭已打开的文档这个就可以遍历已打开文档了,然后是目标笔记文档关闭即可。

最后说明,以上锁定并不是真正加密,安全级别较低,均可以通过直接查看思源磁盘文本等直接查看,如果需要高安全的场景,可以使用加密文本挂件或其他软件实现。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22253 引用 • 88945 回帖
  • 加密
    18 引用 • 58 回帖
  • 安全

    安全永远都不是一个小问题。

    199 引用 • 816 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1327 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • wilsons

    更新 0.0.2

    改进了密码窗口位置不同环境下计算偏差问题;

    修复了当窗口较小时,密码框可能超出屏幕外的 bug;

    改进了当拖动窗口大小时,保持密码框始终在窗口内;

  • 其他回帖
  • 思源居然还有这个功能 😳

推荐标签 标签

  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 740 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    6 引用 • 14 回帖
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    89 引用 • 345 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 136 关注
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 83 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 670 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    15 引用 • 122 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 1 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    266 引用 • 665 回帖 • 2 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 6 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    541 引用 • 672 回帖
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    209 引用 • 358 回帖 • 1 关注
  • 996
    13 引用 • 200 回帖 • 4 关注
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    36 引用 • 37 回帖 • 532 关注
  • sts
    2 引用 • 2 回帖 • 199 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    63 引用 • 348 回帖 • 1 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 662 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    197 引用 • 549 回帖
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    55 引用 • 85 回帖
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    153 引用 • 3783 回帖 • 1 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    77 引用 • 390 回帖