【发布时间】:2021-01-13 22:12:43
【问题描述】:
我有使用 typeorm 和 mysql 的 nestjs 应用程序。现在我想添加用于身份验证处理的firebase,即用于注册、登录、电子邮件验证、忘记密码等。
计划是先在firebase中创建用户,然后将相同的用户详细信息添加到mysql用户表中以进行进一步操作。所以为此我使用定制的中间件
@Injectable()
export class FirebaseAuthMiddleware implements NestMiddleware {
async use(req: Request, _: Response, next: Function) {
const { authorization } = req.headers
// Bearer ezawagawg.....
if(authorization){
const token = authorization.slice(7)
const user = await firebase
.auth()
.verifyIdToken(token)
.catch(err => {
throw new HttpException({ message: 'Input data validation failed', err }, HttpStatus.UNAUTHORIZED)
})
req.firebaseUser = user
next()
}
}
}
Full code is available in Github
上面代码的问题是,它总是寻找身份验证令牌const { authorization } = req.headers const token = authorization.slice(7)
但是,当用户第一次访问应用程序时,授权标头始终为空。 例如,如果用户访问注册页面,我们无法传递 auth 标头。
请告诉我当用户访问注册页面时如何修改上述代码,它允许用户创建用户firebase,然后可以将相同的详细信息存储在数据库中。
【问题讨论】:
标签: javascript firebase firebase-authentication nestjs typeorm