nodejs给密码加密 报错 ,找bug全过程。

一、使用md5对密码加密

1.1 将加密内容抽取为独立文件:

 1.2 在组件中使用md加密:

 1.3 上图对密码加密是封装成中间件的,所以还要在路由中使用该中间件:

 1.4 使用postman发起请求:(报错)

 1.5 对错误进行处理:

  •  以为是md5加密的方法错了,但是看网上都是这样子加密的,,实在是不知道哪里错了。。
  •  通过debug来排查错误,没查出来。。。
  • 决定换一种加密方法,下面使用bcrypt进行加密。

二、使用bcrypt对密码进行加密

2.1 加密方法:

2.1 还是报错,这是想单独执行一下加密文件,先确定一下是加密逻辑的错误还是其他逻辑错误。

  • 结果:两种加密方法都运行成功!!!好吧,原来加密逻辑没有错!
  • 虽然证明md5本身没有问题,省的换来换去,还是接着使用bcrypt进行加密了。

 2.2  突然想起,感觉应该使用异步操作,对于获取加密后的 密码, 然后就将加密内容换成异步的了:(en~我可太缺乏探索精神了555,没有深究是否必须要异步)

 2.3  在页面中确实可以拿到加密后的密码,但是,还是报错500!

  •  下面是密码加密的中间件:
  • 为什么使用一堆 console.log来调试,而不用debug呢——因为debug总是走不到我希望它进入的那一步【冒冷汗】~~~

 2.4 至此,在上图中每一步都可以获得加密后的密码,但是,发起请求还是500!!!

三、一步步回溯,顺着代码倒推

  • 项目中采用分层架构,代码逻辑是一层层嵌套的。决定一层层刨析!!!【真~洋葱模型~~】
  • 代码结构如下图:

  •  下面对第5步代码进行分析:
  • 突然想起来,加密后的密码!变长了!!!MySQL中密码字段长度不够!!!
  • 加长密码长度,成功了!!!

 四、总结

1. 还有一些细节上的坎坎坷坷,这里没有写。最主要的原因也并非字段长度不够。因为前面在抽离的加密函数和 加密中间件之间一直没打通。打通之后意识到字段不够也就是顺藤摸瓜了。

2. 不过,还是得缕清逻辑,写想清楚再下手。