Я использую эту библиотеку для управления ролями и разрешениями в Vue.
https://github.com/anthonygore/vue-router-user-roles
Они предоставляют этот бит кода:
import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import VueRouterUserRoles from "vue-router-user-roles";
Vue.use(VueRouterUserRoles, router);
// This would usually be an AJAX call to the server or a cookie check
// Let's assume the user hasn't logged in yet so they're a guest for now.
let authenticate = Promise.resolve({ role: "guest" });
authenticate.then(user => {
Vue.prototype.$user.set(user);
new Vue({
render: h => h(App),
router
}).$mount("#app");
});
Я использую axios, чтобы публиковать сообщения в своем бэкэнде и получать данные пользователя на основе токена:
const token = localStorage.getItem('user-token')
if (token) {
axios.defaults.headers.common['Authorization'] = 'Bearer ' + token
axios.post('/api/details').then(response => {
this.$store.commit('changeRole','registered')
this.$store.commit('changeName', response.data.success.name)
this.$store.commit('changeEmail', response.data.success.email)
this.$store.commit('changeId', response.data.success.id)
let user = {
role: this.$store.getters.role,
name: this.$store.getters.name,
email: this.$store.getters.email,
id: this.$store.getters.id
}
Vue.prototype.$user.set(user)
})
}else{
this.$store.commit('changeRole', 'guest')
Сведения о пользователе, сохраненные в пользовательской переменной, недоступны для моих компонентов Vue, если я попытаюсь вызвать это. $ User.get (). Id.
Как бы я решил это?Я должен отметить, что я новичок в Vuej. Также бэкэнд - Laravel 5.7.
Спасибо.