Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vuejs2 如何在应用程序启动时初始化能力实例规则?_Vuejs2_Vuex_Nuxt.js_Casl - Fatal编程技术网

Vuejs2 如何在应用程序启动时初始化能力实例规则?

Vuejs2 如何在应用程序启动时初始化能力实例规则?,vuejs2,vuex,nuxt.js,casl,Vuejs2,Vuex,Nuxt.js,Casl,我正在尝试用vuex和Nuxt实现CASL。当我的应用程序启动并且我已经登录时,我在尝试初始化能力规则时遇到问题 基本上,我希望在应用程序启动时获取规则并更新能力实例。但是,当我试图从存储中获取规则时,它返回null。目前,我需要注销并登录以获取规则 store/ability.js import ability from '../config/ability' export const updateAbilities = store => { ability.update(stor

我正在尝试用vuex和Nuxt实现CASL。当我的应用程序启动并且我已经登录时,我在尝试初始化能力规则时遇到问题

基本上,我希望在应用程序启动时获取规则并更新能力实例。但是,当我试图从存储中获取规则时,它返回
null
。目前,我需要注销并登录以获取规则

store/ability.js

import ability from '../config/ability'

export const updateAbilities = store => {
  ability.update(store['users/getRules']) // this does not work and returns null
  return store.subscribe(mutation => {
    if (mutation.type === 'users/setRules') {
      ability.update(mutation.payload)
    }
  })
}
import { Ability } from '@casl/ability'

export default new Ability()
config/ability.js

import ability from '../config/ability'

export const updateAbilities = store => {
  ability.update(store['users/getRules']) // this does not work and returns null
  return store.subscribe(mutation => {
    if (mutation.type === 'users/setRules') {
      ability.update(mutation.payload)
    }
  })
}
import { Ability } from '@casl/ability'

export default new Ability()
store/index.js

import { updateAbilities } from './ability'

export const plugins = [updateAbilities]

谢谢您的帮助。

我最终从本地存储中获取了该规则,并且该规则有效

import ability from '../config/ability'

export const updateAbilities = store => {
  const vuexData = JSON.parse(localStorage.getItem('vuex'))
  const rules = vuexData.users.rules

  ability.update(rules)
  return store.subscribe(mutation => {
    if (mutation.type === 'users/setRules') {
      ability.update(mutation.payload)
    }
  })
}