django的csrf_token的原理

 1 # csrf_token 标签
 2 # 作用: django 自带的一个中间件,用在form标签上,用户校验当前提交的数据是否是 指定页面上提交的数据,跨站请求伪造保护的作用.
 3 
 4 1,打开settings.py里面的csrftoken 功能(取消注释)
 5 2,视图函数
 6     def login(request):
 7         if request.method == 'GET':
 8             nk = ['a','b','c','d']
 9             return render(request,'login.html',{ 'a1':nk })
10         else:
11             print(request.body)
12             return HttpResponse('POST 的请求方式')
13 3,模板文件
14     <form action="" method="post">
15         {% csrf_token %}                                           # 这里加上 {% csrf_token %} 这句代码,表师启用 csrf_token     
16         <h3>用户名: <input type="text" name="name"></h3>
17         <h3>密码: <input type="password" name="password"></h3>
18         <input type="submit">
19     </form>
20 
21 # 请求流程:
22    # 客户端: web段:http://127.0.0.1:8000/login  
23    # 服务端: 发送给客户端 一个login.html的页面,经过中间件的时候,中间件会在这个页面里加上一个隐藏的input标签,里面时csrf的 name和value
24    # 客户端: 收到了login.html的页面,开始填写表单,并点击submit 提交form表单,这里表单里包含了 隐藏的csrf的input的标签.
25    # 服务端: 收到客户端的提交的数据包,会首先在中间件层进行csrf_token的校验,看是否是本机生成的token,如果不是,直接403,如果是,继续走视图函数里定义的代码.

 

posted @ 2020-02-24 00:31  开始认识  阅读(1158)  评论(0编辑  收藏  举报