Я занимаюсь разработкой веб-сайта, на котором использую Firebase и Vue js. Я делаю государственное управление с vuex. Я застреваю, когда ссылаюсь на sh страницу, которую токен не перезагружает. До сих пор я реализовал действие под названием autoSignIn, задача которого - держать пользователя зарегистрированным после refre sh страницы. Я попытался сделать то же самое с токеном, но, похоже, он не работает. Я не могу понять, что я делаю не так? Моя идея такова: когда пользователь обновляет sh страницу, он также должен перезагрузить токен, как это делается для аутентификации пользователя.
При перезагрузке страницы программа выполняет следующие действия: вызывает геттер и Получатель является нулевым. Затем вызовите действие autoSignIn.
¿Как я могу вызвать первый autoSignIn, когда страница Refre sh для токена? Потому что я делаю то же самое для аутентификации пользователей, и это работает
Это хорошая параграф для сохранения токена в хранилище сеансов, куки или localStorage?
Когда я впервые пою, все нормально, но когда refre sh страница, он показывает следующую ошибку. https://i.stack.imgur.com/Suhfl.png
Вот мой обработчик аутентификации, где я управляю аутентификацией пользователя на странице refre sh.
router.beforeEach(async (to, from, next) => {
const user = await new Promise((resolve) => {
firebase.auth().onAuthStateChanged(async user => {
await store.dispatch("autoSignIn", user),
resolve(user)
});
});
Внутри autoSignIn я реализовал код для фиксации токен в состоянии.
autoSignIn ({commit},payload) {
if (payload !== null){
commit('setUser',{email:payload.email, userId:payload.uid})
payload.getIdTokenResult(true).then(token =>{
commit('setToken',token)
console.log(token)
})
}
},
Вот мой получатель токена:
getToken:(state) => {
return state.token !== null && state.user !== null ? state.token : null
}
`````
I use getter in this action to retrieve certain depending on user role.
`````
getEventsByUser({getters,commit}){
let data = [];
if (getters.getToken.claims.admin) {
firebase.database().ref('usuario')
.on('value',event =>{
event.forEach(user =>{
user.child('eventos').forEach(evento =>{
data.push({ "id": evento.key, ...evento.val() })
})
});
commit('setEventsByUser',data)
});
}else if( getters.getToken.claims.student){
firebase.database().ref('usuario/' + getters.isAuthenticated.userId + '/eventos/')
.on("value", eventos =>{
eventos.forEach(evento =>{
data.push({"id":evento.key, ...evento.val()})
});
commit('setEventsByUser',data)
})
}
}
````
This is my componente from where i call the action getEventByUser for getting data.
````
computed:{
getEventsByUser(){
return this.$store.getters.getEventsByUser;
},
},
mounted() {
this.$store.dispatch('getEventsByUser')
},
````