zoukankan      html  css  js  c++  java
  • django session实现登陆验证

    实现用户的登录

    在view中

    def login(request):  
        if request.method=='GET':  
            return render(request,'login.html')  
        else:  
            name=request.POST.get('name')  
            pwd=request.POST.get('pwd')  
            user = User.objects.filter(username=name, password=pwd).first()  
            if user:  
                request.session['name']=user.username   
                return redirect('/account/index')  
            else:  
                return render(request,'login.html',{'msg':"用户名/密码错误"})

    其中的 request.session['name']=user.username 执行了一下几步:

    1.生成随机的sessionID字符串

    2.将sessionID和用户的信息在数据库中保存为一个键值对

    3.通过cookie将sessionID保存在客户端上

    这时候通过用户再次向服务器发送请求时服务器就可以通过请求中的sessionID判断用户的信息了,从而达到保存登录状态的要求。

    实现用户的注销

    在view中

    def logout(request):
        del request.session['name']
    return redirect('/account/index')

    用户注销其实就是删除客户端的sessionID在服务器中保存的状态,所以一句简单的del request.session['name']就可以达到我们的要求

    session注销

    # 注销
    def logout(request):
    # 删除Session
      request.session.flush()
    return redirect("/login/")

    设置cookie的方法

    rep = redirect("/home/")  # 将响应保存在一个变量     

    # 设置Cookie ---> 在返回的响应中告诉浏览器保存一个字符串 # --->>rep.set_cookie("login", 's12', max_age=5) # 设置明文的cookie rep.set_signed_cookie("login", "s12", salt="ooxxoo", max_age=60 * 60 * 24 * 7) # 设置加盐的Cookie

    获取cookie

    #---->> request.COOKIES.get("login", "") == "s12": # 获取默认的未加密的cookie
    request.get_signed_cookie("login", default="", salt='ooxxoo') == "s12": # 获取加密的cookie
     
  • 相关阅读:
    .Net Core部署到CentOS
    Docker容器中开始.Net Core之路
    自我总结和学习表单提交的几种方式 (二)
    自我总结和学习表单提交的几种方式 (一)
    Asp.Net MVC下自定义错误页和展示错误页的几种方式
    .Net下发送邮件遇到问题及解决方案
    Asp.Net MVC CodeFirst模式数据库迁移步骤
    利用微软认知服务实现语音识别功能
    Asp.Net MVC路由生成URL过程
    针对于多线程概念的理解
  • 原文地址:https://www.cnblogs.com/sunshine171/p/9445588.html
Copyright © 2011-2022 走看看