javascript - 在中间件中访问 LocalStorage - NuxtJs

标签 javascript vue.js local-storage vue-router nuxt.js

好吧,我从 nuxt 开始,我有以下路线:

/home

/dashboard

/login

我想保护/dashboard,但仅限于使用 localStorage 中的 token 登录的用户。

我想到的最简单的方法是创建一个/middleware/auth.js

export default function () {
  if (!window.localStorage.getItem('token')) {
    window.location = '/login'
  }
}

并在/dashboard/index.vue 组件中注册。

<script>
export default {
  middleware: 'auth',
}
</script>

但是我无法在中间件中访问 localStorage,因为 LocalStorage 是客户端。

我已经尝试在 created() 仪表板布局中添加同样的检查,但我无法返回 window not set mounted() 为时已晚,它可以仅在页面完全组装后检查。

那么我该如何实现呢? 注意:我不打算为此项目使用任何 Vuex。

最佳答案

我用了cookie-universal-nuxt

在用于登录操作的 vuex 存储上,我设置了一个带有 token 的提交

window.$cookies.set('token', payload, {
    path: '/',
})

并在中间件中访问它 中间件/auth.js

export default (context) => {
    if (!context.app.$cookies.get('token')) {
        return context.redirect('/login')
    }
}

关于javascript - 在中间件中访问 LocalStorage - NuxtJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240262/

相关文章:

javascript - 模拟 DOM 对象

javascript - Google 广告管理系统 (DFP) 中是否会阻止分析事件?

javascript - 覆盖通过 JavaScript 文件加载的 SCSS 文件变量的可行方法是什么?

javascript - 格式化表格以在正确的列和行中显示数据

heroku - 移动浏览器显示 vuetify 应用程序的空白页面

vue.js - 当外部库添加未定义属性时,Vue 不检测更改

javascript - : window. localStorage 和 localStorage 有什么区别吗?

javascript - 如果没有分配给变量,为什么生成器会给出相同的输出

angular - localStorage 未定义(Angular Universal)

javascript - 更改主题并将其存储在本地存储中