微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在nuxt中使用casl-vue而不刷新页面

如何解决如何在nuxt中使用casl-vue而不刷新页面

我尝试在 Nuxt 中使用 casl-vue 进行授权。 一切正常,但只有在刷新后。

我使用自己的文件作为插件

plugins: ['@/plugins/roles'],

我的 roles 文件

import Vue from 'vue'
import { Can,abilitiesPlugin } from '@casl/vue'
import { defineAbility } from '@casl/ability'
Vue.component('Can',Can)

export default ({ $auth }) => {
  let abilities = defineAbility((can) => {
    console.log('s'+$auth.loggedIn)
    if ($auth.loggedIn) {
      $auth.user.permissions.forEach((permission) => {
        can(...permission)
      })
    }
  })
  Vue.use(abilitiesPlugin,abilities)
}

我在登录前检查了 $auth.loggedIn,它是 false。 我尝试在中间件中检查它,它在那里 true 但它在插件中不起作用。

登录页面,我在登录后手动将 $auth.loggedIn 更改为 true 但它仍然不起作用。
我该如何解决这个问题?

解决方法

export default function ({ $auth }) {
  const isLogin = $auth.loggedIn
  const abilities = defineAbility((can) => {
    if (isLogin) {
      const user = $auth.user
      can(user.permissions)
    } else {
      can([])
    }
  })

  Vue.use(abilitiesPlugin,abilities)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。