• 账号锁定功能


    利用redis数据库实现账户锁定

    • 需求 –> 用户输入密码错误,连续错误三次以上,封锁账号在设定时间内不能再登录,直至封锁时间结束后用户才能再登录。
    • 首先我们用到redis中的 lpush – expire – ttl – llen 其方法
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      COPY
      
      # 建立连接连接
      host = "localhost"
      port = 6379
      r = redis.Redis(host=host,port=port)
      #用户名
      username = '123'
      
      
      #账号密码输入错误5次后锁住账号逻辑
      #列表操作
      r.lpush(username,1)
      
      #设置过期时间,单位是秒
      r.expire(username,30)
      #打印过期时间
      print(r.ttl(username))
      #打印列表长度
      print(r.llen(username))
      if r.llen(username) > 3:
          print('你的账号被锁定')
      View Code

      以下是在项目中实现锁定功能

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      COPY
      #登录接口
      class Login(APIView):
          def get(self,request):
              #接收参数
              username = request.GET.get('username',None)
              password = request.GET.get('password',None)
              #验证验证码
              if code != redis_code:
                  return Response({'code':403,'message':'验证码错误'})
              #如果用户的列表长度大于等于3
              if r.llen(username) >= 3:
                  return Response({'code':403,'message':'你的账号已被锁定'})
              #查询用户数据
              user = User.objects.filter(username=username).first()
              if user:
                  #比较密码是否一致,如果一致则登录成功
                  if user.password == make_password(password):
                      return Response({'code':200,'message':'登陆成功','uid':user.id,'username':user.username})
                  #不一致则计数加1,返回密码错误
                  else:
                      r.lpush(username,1)
                      r.expire(username,30)
                      return Response({'code':403,'message':'用户名或密码错误'})
              else:
                  return Response({'code':403,'message':'用户名或密码错误'})
      View Code

       

       

  • 相关阅读:
    ABAP 动态内表构建 Dynamic internal table
    RFC权限分配
    ERP从业来的总结
    WORD中插入VISIO图形,打印乱码解决
    SAP中程序间的相互调用,SUBMIT关键字的用法
    SDva01的屏幕增强
    STL中的binder
    C++中的new
    C++数组中多态问题分析
    Gdiplus中实现双Buffer绘图
  • 原文地址:https://www.cnblogs.com/anle123/p/13365366.html
Copyright © 2020-2023  润新知