小编DWi*_*ick的帖子

使用 Passport 和 Nest 框架已发送标头的错误

我有一个 NestJS 应用程序,其中包含一些身份验证逻辑。登录是使用 Passport 为 Google Oauth 实现的,似乎可以正常工作,但在服务器上我会出现此错误:

(node:19195) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
Run Code Online (Sandbox Code Playgroud)

我谷歌了一下,似乎常见的原因之一可能是向客户端发送几次响应。话虽如此,我无法在我的代码中发现这一点,所以我怀疑这是否是原因。以下是相关的片段。

使用@nestjs/passport 对用户进行序列化和反序列化。

@Injectable()
export class GoogleSerializer extends PassportSerializer {
    constructor(private readonly usersService: UsersService) {
        super();
    }

    public serializeUser(user: User, done: Function) {
        console.log('serialize', user);
        if (user) {
            done(null, user.id);
        } else {
            done(null);
        }
    }

    public async deserializeUser(id: number, done: Function) {
        console.log('deserialize', id);
        this.usersService.findById(id).then(user => {
            done(null, user);
        }).catch(error => {
            done(error, null);
        });
    }
} …
Run Code Online (Sandbox Code Playgroud)

typescript google-oauth passport.js nestjs

5
推荐指数
0
解决办法
424
查看次数

标签 统计

google-oauth ×1

nestjs ×1

passport.js ×1

typescript ×1