当用户登录成功之后,需要将当前用户的登录信息保存在本地,方便后面使用。具体实现如下:
登录成功保存数据
在登录操作执行成功之后,通过commit操作将数据提交到store中,核心代码如下:
1 2 3 4 5 6 7 8 9 10 11
| this.postRequest('/login', { username: this.loginForm.username, password: this.loginForm.password }).then(resp=> { if (resp && resp.status == 200) { var data = resp.data; _this.$store.commit('login', data.msg); var path = _this.$route.query.redirect; _this.$router.replace({path: path == '/' || path == undefined ? '/home' : path}); } });
|
store
store的核心代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| export default new Vuex.Store({ state: { user: { name: window.localStorage.getItem('user' || '[]') == null ? '未登录' : JSON.parse(window.localStorage.getItem('user' || '[]')).name, userface: window.localStorage.getItem('user' || '[]') == null ? '' : JSON.parse(window.localStorage.getItem('user' || '[]')).userface } }, mutations: { login(state, user){ state.user = user; window.localStorage.setItem('user', JSON.stringify(user)); }, logout(state){ window.localStorage.removeItem('user'); } } });
|
为了减少麻烦,用户登录成功后的数据将被保存在localStorage中(防止用户按F5刷新之后数据丢失),以字符串的形式存入,取的时候再转为json。当用户注销登陆时,将localStorage中的数据清除。