登录逻辑
在/views/login目录中index.vue是登录界面,SocialSignin.vue是第三方登录页面。根据文档,思路如下:
https://juejin.cn/post/6844903478880370701
- 登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(token存贮到cookie中,保证刷新页面后能记住用户登录状态),前端会根据token拉取一个 user_info 的接口来获取用户的详细信息(如用户权限,用户名等等信息)。
- 权限验证:通过token获取用户对应的 role,动态根据用户的 role 算出其对应有权限的路由,通过 router.addRoutes 动态挂载这些路由。
在登录页/views/login目录中index.vue,登录按钮绑定了handlelogin函数,如下所示:
handleLogin() {
this.$refs.loginForm.validate((valid) => {
if (valid) {
this.loading = true;
this.$store
.dispatch("user/login", this.loginForm)
.then(() => {
this.$router.push({
path: this.redirect || "/",
query: this.otherQuery,
});
this.loading = false;
})
.catch(() => {
this.loading = false;
});
} else {
console.log("error submit!!");
return false;
}
});
},
handleLogin()调用了store/user.js中action中的login
// user login
login({
commit }, userInfo) {
const {
username, password