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
     
  • 相关阅读:
    第1章 基础知识
    图学习学术速递[2021/10/14]
    图学习学术速递[2021/10/15]
    期望—方差—协方差—协方差矩阵—相关系数
    哈达玛积
    论文解读(MPNN)Neural Message Passing for Quantum Chemistry
    pip 命令总结
    图学习学术速递[2021/10/13]
    Codeforces Round #693 (Div. 3) D. Even-Odd Game
    Codeforces Round #693 (Div. 3) B. Fair Division
  • 原文地址:https://www.cnblogs.com/sunshine171/p/9445588.html
Copyright © 2011-2022 走看看