Redis-IP限流、请求次数限制、唯一登陆

Redis-IP限流、请求次数限制、唯一登陆

我司有一个线上购物平台,为了防止网页爬虫、恶意用户高频访问与秒杀环节产生的高并发使服务器宕机。并且根据用户反馈有两个人同时登录账号导致数据不一致,数据被更改,用户体验不佳。现我司要求使用redis实现如下功能

1.使用redis保持用户状态,同一时间只能有一位用户在线
2.用户在60秒时间戳内只能访问15次服务器
3.用户使用中间件校验请求次数
4.用户账号如果在别处登录提示用户账号已在别处登录,并且更改用户当前登录状态

使用redis保持用户状态,用户每次登录产生唯一的token存贮到redis中key为用户id ,value为token然后使用make_password对token进行加密返回客户端客户端尽行存贮,用户每次请求携带token如果在别处登录token发生改变请求接口对token进行校验如果token与redis中存贮不一致,则账号在别处登录,提示用户;参考代码如下:

import uuid
from rest_framework.response import Response
from rest_framework.views import APIView
from user.models import User

pool = redis.ConnectionPool(host='127.0.0.1')  #redis连接池,'
r = redis.Redis(connection_pool=pool)

class Login(APIView):
    def post(self, request):
        mes = {
   }
        data = request.data
        user = User.objects.filter(username=data['username'], 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值