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

这个功能是根据这两个帖子思源可以像 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 内置对象监听内容变化,然后发现文件在目标笔记内则强制关闭;已引用预览和打开类似都能监听;已嵌入的文本,我觉得可以监听当前激活文档,发现激活文档中有目标笔记的块时则替换为禁止字样;锁定时关闭已打开的文档这个就可以遍历已打开文档了,然后是目标笔记文档关闭即可。

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

  • 思源笔记

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

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

    21193 引用 • 83520 回帖 • 1 关注
  • 加密
    18 引用 • 58 回帖
  • 安全

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

    200 引用 • 816 回帖 • 1 关注
  • JavaScript

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

    726 引用 • 1317 回帖 • 43 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 思源居然还有这个功能 😳

  • 其他回帖
  • wilsons

    更新 0.0.2

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

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

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

推荐标签 标签

  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 1 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    942 引用 • 1459 回帖 • 61 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 3 关注
  • 笔记

    好记性不如烂笔头。

    308 引用 • 793 回帖
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    10 引用 • 32 回帖 • 110 关注
  • 链滴

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

    记录生活,连接点滴

    150 引用 • 3774 回帖
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 344 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 378 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 1 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 7 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖 • 2 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 733 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 67 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    190 引用 • 1056 回帖 • 3 关注
  • abitmean

    有点意思就行了

    31 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 1 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 1 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1234 回帖 • 426 关注
  • CongSec

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

    6 引用 • 1 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 1 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    12 引用 • 54 回帖 • 149 关注
  • 博客

    记录并分享人生的经历。

    272 引用 • 2386 回帖
  • Python

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

    540 引用 • 672 回帖
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 1 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 562 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    220 引用 • 472 回帖