这个功能是根据这两个帖子思源可以像 OneNote 一样锁定笔记本吗和思源是否可以添加笔记本密码功能的需求开发的,主要解决防止别人误点击进入自己的私有笔记的问题,解决办法就是针对私有笔记打开时要求输入密码,然后一段时间后自动锁定笔记。
先上效果:
功能简介:
- 支持给多个笔记添加不同的密码
- 可自定义多少秒内无需再输入密码
- 锁定期间会忽略搜索和引用搜索(锁定或解锁后 30 秒后生效,这是思源忽略文件延迟决定的)
使用方法:
- 把下面的代码放到 js 代码片段中即可
- 配置要加密笔记的密码,在代码片段中修改
lockNotes
参数,这是一个对象,前面是笔记 ID,后面是笔记密码,然后配置keepTime
参数,这个参数代表多少秒内不再提示输入密码,默认 60 秒,如果想用分钟,乘 60 即可,比如,10 分钟就是const keepTime = 10*60
。
笔记 ID 怎么复制呢?笔记上右键 => 设置 => 打开的对话框中最顶部点击“复制 ID”即可 - 然后刷新或重启思源即可。
完整代码如下:
其他说明:
关于限制,锁定后限制其他笔记搜索或引用或间接打开查看等问题,这是个很复杂的问题。
脚本中已实现搜索和引用搜索无法查看的问题(根据搜索引用搜索忽略文件实现的)。
但以下功能尚未实现:
- 强制打开,比如已知道链接可强制打开
- 已引用预览,已引用的文件可预览并打开
- 已嵌入内容的禁止查看,已嵌入的文件可以直接查看
- 锁定时自动关闭已打开的文件
不过,我觉得这些功能一般用不到。试想,既然是私密的文件,一般打开会随时关闭吧,更不会到处引用到外部,既然引用了就说明这个文档并不重要或不私密,更不会直接嵌入到外部文档中。所以,综合考虑,加上这些功能实现的复杂度,该脚本暂不支持这些功能。
不过,这里有些思路,如果你想实现可以参考一下,比如,强制打开可以监听打开状态变化或者通过 siyuan 内置对象监听内容变化,然后发现文件在目标笔记内则强制关闭;已引用预览和打开类似都能监听;已嵌入的文本,我觉得可以监听当前激活文档,发现激活文档中有目标笔记的块时则替换为禁止字样;锁定时关闭已打开的文档这个就可以遍历已打开文档了,然后是目标笔记文档关闭即可。
最后说明,以上锁定并不是真正加密,安全级别较低,均可以通过直接查看思源磁盘文本等直接查看,如果需要高安全的场景,可以使用加密文本挂件或其他软件实现。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于