0

我的 Nestjs 应用程序只能让 Bearer 令牌保持活跃 POSTMAN。当我得到谷歌身份验证数据返回时,它可以工作。这个捕获是 api/auth/google/redirect/?.....

在此处输入图像描述

但是如果我通过键入该网址转到 EDGE 或 CHROME 上的 api/auth/google/profile,

401 { statusCode: 401, message: 'Unauthorized' } 错误返回。它说没有身份验证令牌。

这是我的控制器的代码。此代码正在获取用户的数据。

 @UseGuards(AuthGuard('jwt'))
    @Get('profile')
    getProfile(@CurrentUser()user : User) {
        console.log(user.email + "   from controller")
        return user;
    }

这是我的控制器的代码,此方法用于从 google 获取用户并设置授权令牌。

  
    @Get('/google/redirect')
    @UseGuards(AuthGuard('google'))
 
    async googleAuthRedirect(
        @CurrentUser()user : User,
        @Res({passthrough: true})response : Response,
    ) {
        console.log(user + "data from user decorator");
     
        const refreshToken = this
            .authService
            .getJwtRefreshToken(user.id);

        response.cookie('token', refreshToken, {
            httpOnly: true,
            path: '/',
            sameSite: 'lax',
            maxAge: 3600000
        });
        response.setHeader('Authorization', `Bearer ${refreshToken}`);
        response.setHeader('Access-Control-Allow-Origin', 'http://localhost:4000');
        response.setHeader('Access-Control-Allow-Credentials', 'true');
        return {user,refreshToken};
       
  
    }

没有身份验证令牌错误返回。如何将不记名令牌保留到另一个站点?

如果我使用邮递员,我可以像这样保留不记名令牌。

在此处输入图像描述

我的仓库在这里->> https://github.com/sksmsWKd/meta-test

只有邮递员可以访问/profile。

在此处输入图像描述

4

0 回答 0