【问题标题】:Q: How do I check role in Vuex?问:如何查看 Vuex 中的角色?
【发布时间】:2021-08-02 00:45:47
【问题描述】:

我试图检查 vue js 中用户登录的角色,我正在使用 vuex 进行存储,我想检查用户或管理员的角色是否记录了角色 = 1 和角色 = 1 的推送给用户但对我来说 vuex 有问题。我的角色是角色 1 代表管理员,0 代表数据库中的用户登录,我正在使用 laravel 7 进行 API 和 Vue

谁能帮帮我?

store.js

state: {
        status: '',
        token: localStorage.getItem('token') || '',
        user: {},
        role: ''
    },
    mutations: {
        auth_request(state){
            state.status = 'loading'
        },
        auth_succes(state, token, user,role){
            state.status = 'success'
            state.token = token
            state.user = user
            state.role = role
        },
        auth_error(state){
            state.status = 'error'
        },
        logout(state){
            state.status = ''
            state.token = ''
        },
    },
    actions: {
        login({commit}, user){
            return new Promise((resolve, reject) =>{
                commit('auth_request')
                axios({url: 'http://127.0.0.1:8000/api/v1/login', data: user, method: 'POST'})
                .then(res => {
                    const token = res.data.token
                    const user = res.data.user
                    const role = res.data.role
                    localStorage.setItem('token', token)
                    axios.defaults.headers.common['Authorization'] = token
                    commit('auth_succes', token, user,role)
                    resolve(res)

                })
                .catch(err =>{
                    commit('auth_error')
                    localStorage.removeItem('token')
                    reject(err)
                })
            })
        },
        register({commit}, user){
            return new Promise((resolve, reject) =>{
                commit('auth_request')
                axios({url: 'http://127.0.0.1:8000/api/m2/signIn', data: user, method: 'POST'})
                .then(res => {
                    const token = res.data.token
                    const user = res.data.user
                    localStorage.setItem('token', token)
                    axios.defaults.headers.common['Authorization'] = token
                    commit('auth_succes', token, user)
                    resolve(res)

                })
                .catch(err =>{
                    commit('auth_error')
                    localStorage.removeItem('token')
                    reject(err)
                })
            })
       }

登录.vue


methods: {
       login: function(){
           let email = this.email
           let password = this.password
           if(this.$store.state.role === 1 ){
               this.$store.dispatch('login',{email, password})

                   console.log('Admin logged');

           }else{
               console.log('User logged');
       }

结果显示我是:用户登录

【问题讨论】:

    标签: laravel vue.js vue-component vuex


    【解决方案1】:

    vuex mutation 可以接受两个参数,“mutation name”和“payload”

    你正在尝试传递 4 个参数 commit('auth_succes', token, user,role)

    你应该使用对象将多个参数传递给 vuex 变异

    commit('auth_succes', { token, user, role })

    【讨论】:

    • 你是否更新了你的 auth_succes 突变,以便它可以处理对象负载?
    • 是的,我已经更新了变异!但是如果尝试 this.$store.state.role == 1 || 'admin' 它返回管理员记录
    猜你喜欢
    • 2023-01-26
    • 2023-04-01
    • 2014-06-26
    • 1970-01-01
    • 2021-12-24
    • 2019-11-30
    • 2019-10-19
    • 2017-09-02
    • 1970-01-01
    相关资源
    最近更新 更多