# NestJS Question
# Passport的封装
编写LocalStrategy
需要继承PassportStrategy(Strategy)
,PassportStrategy(Strategy)
返回的类中,构造函数做的事情就是调用passport.use
,同时将LocalStrategy
中的validate
方法放进callback中,而这个callback则传入真正的LocalStrategy
的构造函数。自己编写的LocalStrategy
需要作为providers传入,因此其初始化控制交给了Nest。至于LocalAuthGuard
,需要继承AuthGuard('local')
,这个local则指明了使用LocalStrategy
作为验证的策略。
# Cookie签名
cookie签名需要一个secret,express中cookieOptions设置signed: true
时,会读取request.secret
进行签名,cookie-parser
中间件负责设置request.secret
。
# 关于bcrypt中的Timing Attack
Timing Attack即时序攻击,例如密码毕竟时,通过返回时间长短得到密码位数错误信息。
bcrypt模块是否能够防范Timing Attack取决于compare方法的实现,而node bcrypt (opens new window)该模块实现了时序安全的比较方法CompareStrings (opens new window)。
参考: