我是Next.js的新手,并且正在尝试使用jwt令牌进行身份验证系统。我想知道什么是最好的/标准的方法来存储jwt令牌和使用身份验证系统进行路由。我一直在尝试来自不同教程/文章的不同方法,但不太了解。这是我尝试过的。
当用户登录时,它将用户名/密码发送到单独的 api服务器(例如,处理后端内容的新项目),该服务器将以响应
access-token
,然后在Next.js项目中,我使用接收到的令牌设置cookie。在Next.js项目中,受保护的路由将用withAuth
临时文件包装,它将检查cookie中的令牌。这种方法的问题在于,它容易受到XSS的攻击,因为cookie没有httpOnly标志。这类似于1.),但是使用时
localStorage
,access-token
无法在第一次请求时将问题发送到服务器。(我不确定这个,但是据我理解,在每个http请求中,我必须access-token
手动粘贴,所以我无法控制的请求呢?例如第一个请求或使用<a>
标签)。我在Next.js服务器(自定义快递服务器)中编写了身份验证后端。当用户登录时,服务器将对其进行验证,然后设置一个httpOnly cookie。然后问题是,利用客户端路由(使用Next.js路由器转到url),它无法检查令牌。例如,如果页面被
withAuth
hoc 包裹,但是它无法使用javascript访问cookie内的令牌。
我已经看到很多人处于getInitialProps
受保护的路线中,他们只检查cookie / localStorage中的存在令牌,然后,如果该令牌被吊销或列入黑名单,该怎么办,因为他们没有将令牌发送给服务器?还是在每次客户端页面更改时都必须将令牌发送到服务器?
随着Next.JS v8的引入,在NextJS示例页面中还放置了一些示例。遵循的基本思想是:
智威汤逊
OAuth