ajax获取session值_车辆管理系统V1.2,私信“车辆2”获取源码,已集成登陆验证

车辆管理系统新增用户管理和登录验证功能,采用Ajax提升前端体验。后端实现输错5次密码账户冻结10分钟的机制。使用Django中间件和全局上下文,简化了登录验证代码,提高了系统效率。登录验证部分的View和Ajax代码已展示,完整源码可通过私信获取。
摘要由CSDN通过智能技术生成

大家一直关注的车辆管理系统已经更新了,本次加入了“用户管理”和“登陆验证”功能。

登陆验证前端采用了ajax技术,体验效果更好。

后端除了实现了用户管理,同时实现了输错5次密码,冻结账户10分钟的功能哦。另外使用了django的“中间件”及“全局上下文”,可以说学习和参考的价值极大。由于时间原因,今天又出不了视频讲解了。下一期吧,尽量还是出视频给大家讲解一下中间件、全局上下文和view登陆验证部分。特别是登陆验证这部分,比以前的登陆验证要精简了不少,但是效果反而比以前的好了。

6d8bebde8107c244a13414abf2164e59.png

下面展示view的部分代码和ajax部分代码。

想要获取全部源码的朋友请关注并私信“车辆2”,自动获取下载链接。

ajax部分

function cl_login() {    var username = $('#username_login').val();    if (!username) {        alert('请输入用户名');        return false;    }    var password = $('#password_login').val();    if (!password) {        alert('请输入密码');        return false;    }    var csrf = $('input[name="csrfmiddlewaretoken"]').val();    $.ajax({        url: '/cl/login/',        type: 'post',        data: {            'csrfmiddlewaretoken': csrf,            'username': username,            'password': password,        },        success: function (result) {            var ret = JSON.parse(result);            // 密码正确,正常跳转            if (ret['msg'] === '801') {                window.location.href = '/cl/';            }            // 账户正在冻结期,提示剩余冻结时间,待修改倒计时            else if (ret['msg'] === '802') {                alert('您的账户在冻结期');                var frozen_time = ret['frozen_time'];                alert(frozen_time);            }            // 账户错误            else if (ret['msg'] === '803') {                alert('用户名错误');            }            // 密码错误提示剩余次数,待修改次数倒计时            else if (ret['msg'] === '804') {                var frozen_times = ret['frozen_times'];                alert(frozen_times);            }            // 提示已被冻结            else if (ret['msg'] === '805') {                alert(ret['error_msg']);            }            else {                alert('系统错误');            }        },        error: function () {            alert('请重新提交');        }    });}

views登陆验证部分,

# 用户密码输错5次开始冻结10分钟,每次登陆验证先看是否冻结,并计算冻结时间是否大于10分钟,如果大于10分钟则解冻,否则返回冻结时间,并由前端js计算剩余时间并读秒显示# 如果未冻结则验证账户密码,如果密码错误,则session中记录错误次数,并返回错误次数由js计算剩余次数并显示,5次错误开始冻结# 验证通过后返回801并由js跳转至/cl/,并记录session = username# 801-验证通过,802正在被冻结,803用户不存在,804密码错误,805第五次错误并提示冻结
    def post(self, request):        username = request.POST.get('username')        password = request.POST.get('password')        # 用户是否冻结        username_frozen = FrozenOperatorUsers.objects.filter(operator__username=username)        # 用户被冻结        if username_frozen.exists():            frozen_time = username_frozen.first().FrozenDateTime            time_now = timezone.now()            # 冻结时间加10分钟与现在比较            frozen_time_plus_10m = frozen_time + timezone.timedelta(minutes=10)            if frozen_time_plus_10m <= time_now:                FrozenOperatorUsers.objects.get(operator__username=username).delete()            else:                frozen_time_json = datetime.datetime.strftime(frozen_time, '%Y-%m-%d %H:%M:%S')                return HttpResponse(json.dumps({'msg': '802', 'frozen_time': frozen_time_json}))        # 用户未被冻结        else:            # 用户是否存在/密码是否正确            try:                user_this = OperateUsers.objects.get(username=username)            except:                # 用户不存在                return HttpResponse(json.dumps({'msg': '803'}))            # 密码不正确            session_user_error_time = request.session.get(username)            if not check_password(password, user_this.password):                # session记录错误次数,session中如果没有记录则创建,如果有则增加错误次数                if not session_user_error_time:                    request.session[username] = 1                else:                    if session_user_error_time >= 5:                        freeze_operator = FrozenOperatorUsers(operator_id=user_this.id)                        freeze_operator.save()                        return HttpResponse(json.dumps({'msg': '805', 'error_msg': '您的账户已被冻结'}))                    request.session[username] = (session_user_error_time + 1)                return HttpResponse(json.dumps({'msg': '804', 'frozen_times': request.session[username]}))            # 密码正确            else:                if session_user_error_time:                    del request.session[username]                    print(request.session.get(username))                request.session['username'] = username                return HttpResponse(json.dumps({'msg': '801'}))

大家有没有更好的验证代码,欢迎评论交流哦。

欢迎关注“教程智库”,每天更新干货,学习不再迷路。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值