Flask和Django框架下的项目的登录验证过程以及程序和整个登录过程的不同情况分类。

在这里插入图片描述上述图中所示的时在Flask和Django框架中的登录流程以及相关的验证,左边的是"post请求下的流程",右边的是“get请求下的流程验证”。
图中的结构可以解决登录过程中的问题,以及登录验证,通过session和cookie的应用来判断用户的登录状态。值得注意的是:

  • session是用来判断现在是否已经登录,用来解决http的无状态问题,关于这个问题的详解可以参考我的相关文章。

  • cookie是用来判断以前是否登录过。用来完成登录验证。

  • 整个登录验证过程是通过session和cookie的结合来完成的。

    下面是Django框架的的登录验证程序(完全按照上述图中的结构进行编程的):

def login_views(request):
    # 先判断get请求还是post请求
    if request.method == 'GET':
        #get请求-判断session,判断cookie,登录页
        # 判断session中是否有登录信息
        if 'uid' in request.session and 'uphone' in request.session:
            # 有登录信息保存在session中
            return HttpResponse('您已成功登录过')
        else:
            #没有登录信息保存在session,判断cookie中是否有登录信息
            if 'uid' in request.COOKIES and 'uphone' in request.COOKIES:
                #cookies中有登录信息-曾经记住过密码
                #将cookies中的信息取出来保存进session中,再返回到首页
                uid = request.COOKIES['uid']
                uphone = request.COOKIES['uphone']
                request.session['uid'] = uid
                request.session['uphone'] = uphone
                return HttpResponse('您已成功登录')
            else:
                #cookies中没有登录信息-去王往登录页
                form = LoginForm()
                return render(request,'login.html',locals())
    else:
        #post请求-实现登录操作
        #获取手机号和密码
        uphone = request.POST['uphone']
        upwd = request.POST['upwd']
        #判断手机号和密码是否存在(登录是否成功)
        users = User.objects.filter(uphone=uphone,upwd=upwd)
        if users:
            #登录成功:先存进session
            request.session['uid'] = users[0].id
            request.session['uphone'] = uphone
            #声明响应对象:响应一句话“登录成功”
            resp = HttpResponse('登录成功')
            #判断是否存进cookies
            if 'isSaved' in request.POST:
                expire = 60*60*24
                resp.set_cookie('uid',users[0].id,expire)
                resp.set_cookie('uphone',uphone,expire)
            return resp
        else:
            #登录失败
            form = LoginForm()
            return render(request,'login.html',locals())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值