即使将凭据设置为true

时间:2020-03-08 21:21:29

标签: node.js angular express cookies nestjs

为了进行身份验证,我的服务器(nestjs)发送回带有令牌的cookie。

这是这样完成的:

@SetCookies()
@Post("account/signin")
async signin(@Body() dto: LoginDto, @Req() req, ){
  const token = await this._authService.signin(req.user);
  const options: CookieOptions = {
      expires: moment().add(10, "days").toDate(),
      signed: false,
      secure: false,
      sameSite: false,
      httpOnly: true,
  };
  req._cookies = [
     {
          name: "SESSIONID",
          value: token,
          options: options,
     }
  ];
} 

它有效!至少邮递员向我显示了cookie已成功创建并发送回去。

但是当Angular这样调用API时:

public signin(dto: LoginDto): Observable<any>{
  return this._httpClient.post("http://localhost:3000/account/signin", {
    username: dto.username,
    password: dto.password,
  }, {
    withCredentials: true,
  })
}

set-cookie将在devtools的“网络”标签中发回。

Chrome devtools response headers

但是cookie没有存储在磁盘上。用户已登录,但没有cookie保留。 EditThisCookie不显示任何内容,并且在重新加载后向服务器发出请求时不发送任何cookie。

other questions中,通过将cookie的安全属性设置为false(我已经尝试过)解决了该问题。

我在服务器上设置了带有凭据= true的cors,登录时双方都没有任何错误。

0 个答案:

没有答案