码迷,mamicode.com
首页 > 其他好文 > 详细

基于restframework进行token验证

时间:2019-09-02 18:51:17      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:输入   登录   await   跳转   word   set   username   数据库   success   

  一般情况下,进入到web网站主页都需要进行token或者其它验证,不能在没有登录的情况下可以查看主页的内容,在用户输入用户名密码后,进行校验成功,后台会返回一个token,用于用于下次访问主页或其它页面进行用户认证,一旦认证成功就可以访问了。

1、用户获取token

用户向后台API发送用户名和密码进行校验以及获取token。

 methods: {

      loginSubmit(formName) {
        this.$refs[formName].validate(async (valid) => {
          if (valid) {
            const res = await this.$http.post(‘login‘, this.form);
            const {data, meta: {message, code}} = res.data;
            if (code === 2000) {

              //获取token,将token值存储在localStorage
              localStorage.setItem(‘token‘, data.token);

              //验证成功后直接跳转到主页
              this.$router.push({name: ‘home‘});
              //登陆成功提示
              this.$message.success(message)
            } else {
              this.$message.warning(message)
            }

          } else {
            this.$message.warning("用户名或密码不能为空")
          }
        });
      }
    },

2、后台进行验证

class LoginView(APIView):
    authentication_classes = []  # 登陆页面免认证,其余的已经全局配置

    def post(self, request, *args, **kwargs):

        ret = {
            "data": {},
            "meta": {
                "code": 2001,
                "message": "用户名或密码错误"
            }
        }
        user_obj = json.loads(str(request._request.body, encoding=utf8))
        username = user_obj.get(username)
        password = user_obj.get(password)
        if username and password:
            obj = UserInfo.objects.filter(
                username=username, password=password).first()
            if obj:

                token = get_md5(username)
                # 自动去数据库检查,如果没有就创建,否则更新token
                UserToken.objects.update_or_create(user=obj, defaults={token: token})
  
                ret["data"]["username"] = username
                ret["data"]["password"] = password
                ret["data"]["token"] = token

                ret["meta"]["code"] = 2000
                ret["meta"]["message"] = "登陆成功"
            else:
                pass
        else:
            pass
        return HttpResponse(json.dumps(ret, ensure_ascii=False))

 

基于restframework进行token验证

标签:输入   登录   await   跳转   word   set   username   数据库   success   

原文地址:https://www.cnblogs.com/shenjianping/p/11448160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!