Httponly cookie作为不记名代币-Laravel Passport

Httponly cookie作为不记名代币-Laravel Passport,laravel,oauth,axios,laravel-passport,Laravel,Oauth,Axios,Laravel Passport,我已经开始使用React JS和Laravel 5.5构建应用程序。我已经安装了Laravel Passport,并成功地在React JS应用程序中登录和注销了我的用户,但我被告知为了安全起见,应该考虑使用httponly cookies 在我的工作代码中,我只是将访问令牌存储在localStorage中,并使用axios头中的Authorization':“Bearer”+token将其发送到api,这非常有效。然而,当我使用httponly设置cookie时,我无法使用react cook

我已经开始使用React JS和Laravel 5.5构建应用程序。我已经安装了Laravel Passport,并成功地在React JS应用程序中登录和注销了我的用户,但我被告知为了安全起见,应该考虑使用httponly cookies


在我的工作代码中,我只是将访问令牌存储在localStorage中,并使用axios头中的
Authorization':“Bearer”+token
将其发送到api,这非常有效。然而,当我使用httponly设置cookie时,我无法使用react cookie(从npm)获取它的值(我认为这正是问题所在!),如果我将
cookie.loadAll()
记录到控制台,那么我看到的唯一cookie是一个新的
XSRF-TOKEN
cookie,而不是我设置的
accessToken
cookie。那么我该如何将这个令牌发送到api呢?

因为您无法从JS读取httpOnly cookie,所以当从后端获取新令牌时,后端必须在响应体中发送令牌。

httpOnly cookie作为承载令牌没有多大意义。cookies httponly有助于保护您和用户免受XSS攻击,因为javascript无法读取它们。它们可用于存储会话信息,并在用户重新加载页面时发送


将授权头设置为
'Bearer'+令牌
是向api发送令牌的正确方法。在api服务器上使用令牌之前,应始终检查令牌是否仍然有效。

浏览器会话cookie使用和承载令牌是不同的身份验证策略(基于cookie和基于令牌)

在我看来,它们不应该混为一谈

Lavavel passport支持使用不记名代币或现成的cookie进行身份验证(请参见第页的条件) 你必须用这个

在这种情况下,您将能够设置cookie并将
HttpOnly
标志与其他属性一起使用以保护它们