Ole*_*nko 8 javascript node.js express passport.js nestjs
我使用 Nestjs 和两个护照策略创建了一个身份验证模块:passport-facebook、passport-google-oauth20。一切正常,除非不正常
如果护照策略中存在错误,服务器将返回 500 错误,而不是策略引发的错误。例如,如果来自身份提供商的令牌已被使用,我们会收到FacebookTokenError: 此授权代码已被使用。(passport-facebook) 或TokenError: Bad Request (passport-google-oauth20) 控制台中出现消息,但服务器返回 500 错误。
在这种情况下,nestjs 返回正确错误的方法是什么?
另外,有人可以解释为什么我们需要 2 条路线(auth/google 和 auth/google/callback),而只有一条路线(auth/google 和 @UseGuards(AuthGuard('google'))) 工作正常吗?
Ole*_*nko 15
如果有人遇到同样的问题,我想发布一个答案。您需要实施您的 AuthGuard。例如:
import { Injectable, UnauthorizedException } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
@Injectable()
export class FacebookAuthGuard extends AuthGuard('facebook') {
constructor() {
super();
}
handleRequest(err: any, user: any, info: any, context: any, status: any) {
console.log('errorGuard', err);
if (err || !user) {
throw new HttpException(err.message, err.status);
}
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
在handleRequest方法中,您可以获取有关您需要的错误的所有信息。500 错误是由护照策略本身引发的。
| 归档时间: |
|
| 查看次数: |
4571 次 |
| 最近记录: |