根據 csrf_token 校驗原理,具體操做步驟有如下幾步: 1.後端生成 csrf_token 的值,在前端請求登陸或者註冊界面的時候將值傳給前端,傳給前端的方式可能有如下兩種: 在模板中的 From 表單中添加隱藏字段 將 csrf_token 使用 cookie 的方式傳給前端 2.在前端發起請求時,在表單或者在請求頭中帶上指定的 csrf_token 3.後端在接受到請求以後,取到前端發送過來的 csrf_token,與第1步生成的 csrf_token 的值進行校驗 4.若是校驗對 csrf_token 一致,則表明是正常的請求,不然多是僞造請求,不予經過 而在 Flask 中,CSRFProtect 這個類專門只對指定 app 進行 csrf_token 校驗操做,因此開發者須要作如下幾件事情: 生成 csrf_token 的值 將 csrf_token 的值傳給前端瀏覽器 在前端請求時帶上 csrf_token 值 生成 csrf_token 的值 # 導入生成 csrf_token 值的函數 from flask_wtf.csrf import generate_csrf # 調用函數生成 csrf_token csrf_token = generate_csrf() 將 csrf_token 的值傳給前端瀏覽器 實現思路:能夠在請求勾子函數中完成此邏輯 @app.after_request def after_request(response): # 調用函數生成 csrf_token csrf_token = generate_csrf() # 經過 cookie 將值傳給前端 response.set_cookie("csrf_token", csrf_token) return response 在前端請求時帶上 csrf_token 值 根據登陸和註冊的業務邏輯,當前採用的是 ajax 請求 因此在提交登陸或者註冊請求時,須要在請求頭中添加 X-CSRFToken 的鍵值對 $.ajax({ url:"/passport/register", type: "post", headers: { **"X-CSRFToken": getCookie("csrf_token")** }, data: JSON.stringify(params), contentType: "application/json", success: function (resp) { if (resp.errno == "0"){ // 刷新當前界面 location.reload() }else { $("#register-password-err").html(resp.errmsg) $("#register-password-err").show() } } })
https://blog.csdn.net/brook_/article/details/80954472html