为了让登录的表单在页面居中,可以使用margin, 设置左右为auto,这样相当于左右的边界等宽,从而表单在页面居中
.loginf-form {
max-width: 500px;
margin: 0 auto;
}
登录表单涉及到校验,主要是在表单的rules属性,在表单项中的prop属性和定义的校验规则名称要一一对应
表单的ref属性相当于这个表单的引用ID,用来唯一标识一个表单,在提交表单后的校验语法
this.$refs['formName'].validate((valid) => {
if(valid){
//do sth
}else {
console.log('error');
return false;
}
})
用户登录后获取到token和userInfo,将这两个信息同步到状态中,同步方法是: 调用this.$store的commit方法
_this.$store.commit("SET_TOKEN", jwt)
_this.$store.commit("SET_USERINFO", userInfo)
SET_TOKEN SET_USERINFO定义在store/index.js中,被称为mutations,也即对状态的修改方法都定义在这里,
store/index.js中的getter用来获取状态,mutation用来修改状态,state下面则定义了状态
export default new Vuex.Store({
state: {
token: '',
userInfo: JSON.parse(sessionStorage.getItem("userInfo"))
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
localStorage.setItem("token", token)
},
SET_USERINFO: (state, userInfo) => {
state.userInfo = userInfo
sessionStorage.setItem("userInfo", JSON.stringify(userInfo))
},
REMOVE_INFO: (state) => {
state.token = ''
state.userInfo = {}
localStorage.setItem("token", '')
sessionStorage.setItem("userInfo", JSON.stringify(''))
}
},
actions: {
},
modules: {
}
})
分为请求拦截器和响应拦截器,请求拦截器主要在请求中添加一些额外的信息,例如在请求header上带上token, 响应拦截器可以用户判断接口调用是否出错,或者判断是否未登录,并进行统一的消息提示。