购物车登录

购物车登录

1.jwt token

 import jwt,datetime
from day5 import settings
# 生成jwttoken
# 这里的user是继承自登录视图生成的user
def gennerate_jet_token(user):
    # 要加密的数据  字典
    payload = {
        'id':user.id,
        'username':user.username,
        'mobile':user.mobiles
        # 'exp':datetime.datetime.now() + datetime.timedelta(seconds=300),
    }
    # 进行加密,生成jwt token
    # payload 负载  algorithm 运算法则
    token = jwt.encode(payload=payload,key=settings.SECRET_KEY,algorithm='HS256')
    # 返回token
    return token

2.登录

class Login(APIView):
    def post(self,request):
        # 获取用户名,密码
        username = request.data.get('user')
        pwd = request.data.get('pwd')
        # 读取数据库中的用户信息
        try:
            # 判断用户是否存在
            # 多方式登录
            from django.db.models import Q
            user =User.objects.get(Q(username=username)|Q(mobiles=username))
        except Exception as e:
            print(e)
            return Response({"code":204,'msg':'用户不存在'})
        # 判断密码正确
        # check_password校验密码,是继承模型类才有的的方法
        if not user.check_password(pwd):
            return  Response({"code":204,'msg':'密码不正确'})
        # 返回正确
        # 生成用户的jwt token
        token = gennerate_jet_token(user)
        return Response({
            'code':200,
            'msg':'用户%s登录成功'%user.username,
            'token':token,  # 添加token字段
            # 字典类型
            'user':{
                'userName':user.username,
                'uid':user.id
            }
        })

亲端

#登录时密码是在前端判断的,点击登陆时,将账号和密码传到后端进行验证
    Login() {
      // 通过element自定义表单校验规则,校验用户输入的用户信息
      this.$refs["ruleForm"].validate(valid => {
        //如果通过校验开始登录
        if (valid) {

          // 发送ajax
          this.$axios.post("/users/login/", {
              user: this.LoginUser.name,
              pwd: this.LoginUser.pass,
            })
            .then(res => {
              console.log("@@登录的响应:", res)
              if (res.data.code == 200) {
                // res.data为后端响应的json
                // 隐藏登录组件
                this.isLogin = false;
                // 登录信息存到本地缓存
                // 先转化为json类型
                
                let user = JSON.stringify(res.data.user);
                localStorage.setItem("user", user);     // 内存存储json数据
                console.log("@@user", user)
                
				//转化为json类型   // 保存jwt token信息
				let token= JSON.stringify(res.data.token);
                localStorage.setItem("token", token)    
                // console.log("@@res.data.user", res.data.user)
                
                this.setUser(res.data.user);      //vuex存储对象
                this.notifySucceed(res.data.msg);
				
				//跳转页面
				this.$router.push({path:'/profile'})
              } else {//响应不是200
                // 清空输入框的校验状态
                this.$refs["ruleForm"].resetFields();
                // 弹出通知框提示登录失败信息
                this.notifyError(res.data.msg);
              }
            })
            .catch(err => {
              console.log(err)
              return Promise.reject(err);
            });
        } else {//未通过用户校验
          return false;
        }
      });
    }

版权声明:本文为weixin_68919548原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。