视频电商网站 - 用户登录部分优化

前面我们已经实现了用户登录
http://blog.csdn.net/github_26672553/article/details/70048077

我们先把这个『用户登录功能部分』优化一下,比如:登录成功之后跳转到会员中心。

1、给用户登录方法多加一个参数,作为登录成功之后的回调函数

原方法:

userLogin(context,{user_name,user_pass})

多加一个参数:

userLogin(context,{user_name,user_pass,callback})

这样在页面上调用的时候(userlogin.vue组件调用的时候),代码也需要改动了:

this.$store.dispatch("userLogin",{"user_name":this.UserModel.user_name,"user_pass":this.UserModel.user_pass,"callback":function(){
self.location = "/member"; //跳转到会用中心
}})

其实除了登录成功网页上有业务处理(比如跳转),登录失败网页上也应该提示。
那么就需要2个回到函数了,我们这里只是演示套路,所以就只写了一个成功的回调函数。

2、上面我们只是说明要增加一个callback参数,具体的代码还没有写呢
UsersModule.js中:

    actions:{
        userLogin(context,{user_name,user_pass,callback}){
            // 发送get请求做权限认证(真实开发建议用post的方式)
            let url = "http://localhost/yiiserver/web/index.php/token?client_appid="+user_name+"&client_appkey="+user_pass;
            console.log(url);

            Vue.http.get(url)
                .then((res)=>{
                    if (res!=null && res.body!=undefined && "access-token" in res.body){
                        var token = res.body["access-token"];
                        if (token != ""){
                            // 后端API验证通过
                            // 调用上面mutations里定义的方法
                            context.commit("setUser",{"user_name":user_name,"user_token":token,callback});
                        }
                    }else{
                        alert("用户名密码错误");
                    }
                },(res)=>{
                    alert("请求失败进入这里")
                });
        }
    }

我们还是要通过context.commit()把回到函数传给mutations部分定义的setUser方法,这个方法是做用户登录名和token保存业务的。

    mutations:{
        setUser(state,{user_name,user_token,callback}){
            // 在这里把用户名和token保存起来
            localStorage.setItem("currentUser_name",user_name);
            localStorage.setItem("currentUser_token",user_token);

            // 保存之后,执行回到函数
            callback();
        }
    },

保存之后,就执行这个回到函数。这样就通知网页上了。

通过以上的代码,我们要学习的套路是:有些方法里是只处理业务逻辑的(比如保存用户名和token),而一些网页效果(提示信息)的代码不能写在一起。

处理navbar上的用户登录状态

来到navbar.vue,我们写一个计算属性:

        computed:{
            showUserNameLabel(){ // 是否显示用户登录标签
                if(this.$store.state.users.currentUser.UserName == "guest"){
                    return true
                }else {
                    return false;
                }
            }
        },

然后模板中:

                    <el-menu-item index="3" v-if="showUserNameLabel">
                        <v-link @click="userLoginAndReg">注册/登录</v-link>
                    </el-menu-item>
                    <el-menu-item index="3" v-if="!showUserNameLabel">
                        <a href="##">当前登录用户:{{this.$store.state.users.currentUser.UserName}}</a>
                    </el-menu-item>

这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值