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 模块的完成方式。好好研究一下,也许你可以使用它而不是编写自己的实现,或者至少你会对它的实现方式有一些想法
我在使用 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 模块的完成方式。好好研究一下,也许你可以使用它而不是编写自己的实现,或者至少你会对它的实现方式有一些想法