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,如果是,繼續走視圖函數里定義的代碼.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM