编辑:这将是一种更好的设计模式,为认证页面创建布局并在登录后重定向,而不使用主页上的条件,而是使用一种将未经身份验证的用户重定向到主页的中间件吗?
我已将应用程序转换为SSR,正在制定身份验证详细信息,欢迎任何资源或设计建议!
我搜索了遇到相同问题的人,并尝试了各种替代方法,但均未成功,所以我想知道是否有人对我可能在这里出错的地方有任何线索。预先感谢!
以下代码应解释我所遇到的问题。我正在使用Nuxt SPA,但无法根据商店更新布局。
console.log('auth or not')返回true,在我的模板中Authenticated = {{isAuth}}也返回true。
问题是,当我将代码保存在vscode中时,布局更新会保持一致,但是当我刷新时,即使考虑到会话已保存且商店getter isAuth返回true,它也会恢复为“默认”。
离题(随时可以考虑)
我是一名自学成才的开发人员,因此,如果您看到任何反模式(可能有很多),我可以向您征询意见。
您是否会建议Nuxt用于SPA项目而不是普通的vue,vuex,vue-router,或者您认为我应该过渡到SSR,因为我处于项目的开端。
这是一个志愿者项目,所以我只是在尝试提高自己的技能并帮助朋友时。任何学习资源将不胜感激!
import { fireDb } from '~/plugins/firebaseconfig.js'
import { mapGetters } from 'vuex'
export default {
data () {
return {
writeSuccessful: false,userLoggedIn: false,}
},beforeCreate() {
console.log('before create')
let _this = this;
console.log(sessionStorage);
Object.keys(sessionStorage).forEach((e,i) => {
//getting user info from session storage
if(JSON.parse(sessionStorage[e]).uid) {
let user = JSON.parse(sessionStorage[e]);
let userInfo = {
userEmail: user.userEmail,userThumbnail: user.photoURL,username: user.displayName
};
_this.$store.commit('userLogin',userInfo)
console.log('auth or not')
console.log(this.$store.getters.isAuth);
}
})
},computed:
mapGetters({
anuncios: 'anuncios/get',isAuth: 'isAuth'
}),layout({store}) { return store.getters.isAuth ? 'authenticated' : 'default' },
很抱歉,很长的帖子,再次感谢您抽出宝贵的时间来阅读它!