登录后,我在商店内部和localStorage内部设置了变量"authenticated" = true
。
我如何检查每个页面authenticated==true
并显示不同的菜单元素?
(我使用ssr)
由于
答案 0 :(得分:4)
authenticated
。在需要该状态的组件中设置计算变量。
computed() {
authenticated () => { return this.$store.state.authenticated }
}
在<v-if>
的模板中使用它。
答案 1 :(得分:2)
如果您不想使用Vuex,
{ authenticated: false }
。this.authenticated
。示例:
import persistentStorage from 'vue-persistent-storage';
const initialState = {
authenticated: false
};
Vue.use(persistentStorage, initialState);
Vue.component('my-login', {
methods: {
login: function () {
doLogin() // call to auth API
.then(() => { this.authenticated = true })
.catch(() => { this.authenticated = false })
}
}
})
new Vue({
el: '#app',
created: function () {
if (loginIsValid) { // check auth validity upon app bootup
this.authenticated = true
} else {
this.authenticated = false
}
}
})
现在authenticated
可用作所有组件和Vue实例中的数据。对this.authenticated
的任何更改都将存储在localStorage中,您可以像使用vanilla Vue应用程序一样使用this.authenticated
。
如果您想了解其工作原理,the code非常简单。它基本上是
initialState
在所有Vue实例中都可用,并免责声明:我是vue-persistent-state的作者。