zoukankan      html  css  js  c++  java
  • 08.cookie

    1.1 cookie简介

    • 1.cookie实质就是客户端硬盘中存放的键值对,利用这个特性可以用来做用户验证
    • 2.比如:{“username”: “dachengzi”} #再次访问url就会携带这些信息过来

    1.2 前端操作cookie

    • 说明: 使用下面方法操cookie必须先引入jquery.cookie.js
    • 前端获取cookie值: var v = $.cookie('per_page_count');
    • 前端设置cookie值: $.cookie('per_page_count',v);

    1.3 后端操作cookie

    • 说明: response = HttpResponse(...) 或 response = render(request, ...)
    • 后端设置cookie值: response.set_cookie('username',"zhangsan")
    • 后端后去cookie值: request.COOKIES.get('username')

    1.4 设置cookie时常用参数

    def cookie(request):
        #1 获取cookie中username111得值
        request.COOKIES.get('username111')
    
        #2 设置cookie的值,关闭浏览器失效
        response.set_cookie('key',"value")
        # 设置cookie, N秒只后失效
        response.set_cookie('username111',"value",max_age=10)
    
        #3 设置cookie, 截止时间失效(expires后面指定那个时间点失效)
        import datetime
        current_date = datetime.datetime.utcnow()
        exp_date = current_date + datetime.timedelta(seconds=5)         #seconds指定再过多少秒过期
        response.set_cookie('username111',"value",expires=exp_date)
    
        #4 设置cookie是可以使用关键字salt对cookie加密(加密解密的salt中值必须相同)
        obj = HttpResponse('s')
    
        obj.set_signed_cookie('username',"kangbazi",salt="asdfasdf")
        request.get_signed_cookie('username',salt="asdfasdf")
    
        #5 设置cookie生效路径
        path = '/'
    
        #6 删除cookie中is_login的值
        response.delete_cookie('is_login')
        return response

    02.使用cookie实现用户登录、注销

    2.1 views.py

    from django.shortcuts import render,HttpResponse,redirect
    
    def index(request):
        username = request.COOKIES.get('username')        # 获取cookie
        if not username:
            return redirect('/login/')
        return HttpResponse(username)
    
    def login(request):
        if request.method == "GET":
            return render(request,'login.html')
        if request.method == "POST":
            u = request.POST.get('username')
            p = request.POST.get('pwd')
            if u == 'tom' and p == '123':
                res = redirect('/index/')
                res.set_cookie('username',u,max_age=500)        # 设置500s免登陆
                return res
            else:
                return render(request,'login.html')
    
    def logout(req):
        response = redirect('/login/')
        #清理cookie里保存username
        response.delete_cookie('username')
        return response

    2.2 login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="/login/" method="POST">
            <input type="text" name="username" placeholder="用户名">
            <input type="text" name="pwd" placeholder="密码">
            <input type="submit" value="提交">
        </form>
    </body>
    </html>

    03.CSRF原理

    1、当用户第一次发送get请求时,服务端不仅给客户端返回get内容,而且中间包含一个随机字符串
    2、这个字符串是加密的,只有服务端自己可以反解
    3、当客户端发送POST请求提交数据时,服务端会验证客户端是否携带这个随机字符串, 没有就会引发csrf错误
    4、如果没有csrf,那么黑客可以通过任意表单向我们的后台提交数据,不安全

  • 相关阅读:
    MIT python 第二课第四十分钟 取最小值的例子
    Python IDLE快捷键 汇总
    5、Hibernate的延迟加载
    4、Hibernate三种状态的讲解
    3、Hibernate实现简单的CRUD操作
    1、hibernate的简单配置
    2、hibernate的 save 保存失败的解决方法
    JavaWeb开发中关于分页的实现
    常见的网页布局二
    常见的网页布局一
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14788832.html
Copyright © 2011-2022 走看看