快速搭建带密码验证的安全markdown文档服务(不使用密码验证也可以)

447 阅读2分钟

前段时间同事需要写一个文档,而且需要登录,他原来是选择用docsify,但是他只会写文档运行,不知道怎么实现登录才能查看文档的功能,然后就找上了我。我看了一下框架支持ssr,那么应该也可以实现密码验证,但是试了一下并没有实现(惭愧),那索性自己写一个吧。

我这边写了一个现成的脚手架,直接初始化项目就可以开始写md文档了

github项目代码:yinyangshibolange/serve-mds: markdown md password ssr (github.com)

npm项目名称:ssr-md

构建思路

现在"市面上"的文档系统一般都是静态的,本来吗,文档写来就是给人看的,但是确实会遇到特殊的需求,比如说为了文档安全要验证身份才能登录之类的,那么单纯的静态文档就显得不安全了

  1. 搭建node服务器,由于是个小功能,直接引用node的http server
server = require("http").createServer()
  1. 监听request,根据请求url返回内容
server.on("request", function(req,res){
    const url = request.url
})

内容包括登录页,md页,静态资源,验证接口

  1. 登录页很简单,只需要一个密码输入框,还有一个提交按钮,另外就是有一张图片和一个文档标题

  2. md页根据md文件生成(md文件现在是放在服务器一起),使用marked转换为html,之后加载markdown主题和hightlight.js代码高亮主题, 之后根据转换成的html生成左侧导航栏(正则查找h1-h6)

  3. 密码从文本文件中读取,使用readline包逐行读取,之所以不写入config.js中,是考虑之后做一个管理员账号,对密码进行可视化管理,有兴趣的小伙伴可以自行尝试

  4. 文档结构为发散型,即各md文档用链接相互跳转,如果有多个文档,建议把首页设置为目录,链接到其他的各个文档,如下图所示

Snipaste_2023-05-23_17-02-29.png

最后效果如下图:

fgh1.gif