nuxt.js 中的 JWT 授权

JWT authorization in nuxt.js

我在使用 nuxt 通过 JWT 进行授权时遇到问题。我想限制没有 JWT 令牌的用户访问特定路由。在 nuxt 中检查授权最合适的地方是中间件,但我无法访问其中的 localStorage。我试图在 nuxt.config.js 中设置 mode: "spa" 并检查中间件中的 if (process.browser) 条件以访问中间件中的 localStorage,但对于每个请求,此条件都是错误的。那么,是否有任何选项可以检查中间件中是否存在 JWT 令牌?我应该将 JWT 令牌存储在 localStorage 中吗?如果没有,我应该把它存放在哪里?

首先你需要使用process.client而不是process.browser来检查它是否是客户端。参见 docs here

isClient Boolean Client & Server Boolean to let you know if you're actually renderer from the client-side (deprecated. use process.client).

其次,如果你设置 mode: spa 它总是为真,所以这个检查只在通用模式下有意义。

第三,您可以将令牌存储在本地存储和 cookie 中,这就是 nuxt-auth 模块的完成方式。好好研究一下,也许你可以使用它而不是编写自己的实现,或者至少你会对它的实现方式有一些想法