vue与django中预防CSRF
一、环境:
vue2.0、django 1.10.x、iview
二、django后台处理
1、将django的setting的MIDDLEWARE中加入django.middleware.csrf.CsrfViewMiddleware,一般新建的django项目中会自带的。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
2、在templete的html页的from(iview的<i-form></i-form> 标签)中添加{% csrf %},后台渲染语法如下:
render(request,'xxxx.html')
二、前端处理
修改axios 请求设置为:这里取当前cookie中的值,赋值在请求头的'X-CSRFToken'变量中
axios.interceptors.request.use((config) => {
config.headers['X-Requested-With'] = 'XMLHttpRequest';
let regex = /.*csrftoken=([^;.]*).*$/;
config.headers['X-CSRFToken'] = document.cookie.match(regex) === null ? null : document.cookie.match(regex)[1];
return config
});
这样向后台的请求都会带django生成的那个csrf_token值。中间件csrf模块会截取判断csrf_token值是否一致,如果一致则请求合法。
三、ivew表单效验注意事项
由于使用的是vue2.0 版本,此时绑定的写法有变动。
<i-form ref="formValidate" :model="formValidate" :rules="ruleValidate" :label-width="80">
{% csrf_token %}
<Form-item label="验证码:" prop="uidcode">
<i-input v-model="formValidate.uidcode" laceholder="请输入验证码" style="width:80%"></i-input>
</Form-item>
</i-form>
new Vue({
el: "#temp",
data() {
return {
formValidate: {
uidcode: '',
},
ruleValidate: {
uidcode: [
{ required: true, message: '不能为空!', trigger: 'blur' }
]
}
}
},
methods: {
handleSubmit (name) {
this.$refs[name].validate((valid) => {
if (valid) {
//do something
}
})
},
handleReset (name) {
this.$refs[name].resetFields();
}
},
})
关于django中更多的CSRF问题,详见 利用django中间件CsrfViewMiddleware防止csrf攻击
vue与django中预防CSRF的更多相关文章
- Django中的CSRF
CSRF(Cross Site Request Forgery, 跨站域请求伪造) CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的 ...
- Django中的CSRF(跨站请求伪造)
Django中的CSRF(跨站请求伪造) Django CSRF 什么是CSFR 即跨站请求伪装,就是通常所说的钓鱼网站. 钓鱼网站的页面和正经网站的页面对浏览器来说有什么区别? (页面是怎么来的? ...
- Django中的csrf基础了解
简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功能有 ...
- Django中的csrf相关装饰器
切记: 这俩个装饰器不能直接加在类中函数的上方 (CBV方式) csrf_exempt除了,csrf_protect受保护的 from django.views import Viewfrom ...
- Django中关于“CSRF verification failed. Request aborted”的问题
遇到该问题的情境 在Django中采用Ajax提交表单,涉及到跨域问题. 解决措施 在html页面中的表单内添加如下代码: {% csrf_token %} 在视图函数所在的py文件中添加如下代码: ...
- django中的CBV
CBV介绍 我们在写一个django项目时,通常使用的都是FBV(function base views) 而CBV(class base views)也有它自己的应用场景,比如在写一个按照rest规 ...
- rest framework认证组件和django自带csrf组件区别详解
使用 Django 中的 csrf 处理 Django中有一个django.middleware.csrf.CsrfViewMiddleware中间件提供了全局的csrf检查.它的原理是在<fo ...
- django框架进阶-CSRF认证
############################################### """ django中csrf的实现机制 #第一步:django第一次响应 ...
- Django中csrf错误
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站 ...
随机推荐
- 数据结构与算法JavaScript描述——链表
1.数组的缺点 数组不总是组织数据的最佳数据结构,原因如下. 在很多编程语言中,数组的长度是固定的,所以当数组已被数据填满时,再要加入新的元素就会非常困难. 在数组中,添加和删除元素也很麻烦,因为需要 ...
- POJ 1222 EXTENDED LIGHTS OUT(反转)
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12616 Accepted: 8 ...
- Idea项目:Failed to create a Maven project ‘…pom.xml’ already exists in VFS 解决
在IDEA里面创建Module,因为项目类型原因删掉,又重新创建一个新的,名字没有变.于是报错: Failed to create a Maven project: '**/***/pom.xml' ...
- vue-router规则下 history模式在iis服务器上配置
vue默认模式是hash模式 url地址栏会带有“#”这个字符. 例如:http://www.xxx.com/#/index 感觉和正常的url相比有点丑. 如何让此地址如正常的url一样 官 ...
- Go - coding之前的准备
Go tool 的使用 Go的tool要求我们对于code有一定的结构化组织和管理,下面我们就来一介绍他们: --GoPath environment variable: 顾名思义,环境变量,指定了 ...
- setTimeout和setInterval的unref()和ref()用法
var testFunction=function(){ console.log("guoyansi"); } var timer=setInterval(testFunction ...
- Thread pools & Executors
Thread pools & Executors Run your concurrent code in a performant way All about thread pools # H ...
- SQL DATE_SUB 函数用法
SQL DATE_SUB 是一个mySql函数.不象SQL DATE_ADD 函数 增加时间值,SQL DATE_SUB 将从一个日期/时间值中减去一个时间值(时间间隔). SQL DATE_SUB ...
- ubuntu apt-get常用命令
apt-cache search package 搜索包apt-cache show package 获取包的相关信息,如说明.大小.版本等sudo apt-get install package 安 ...
- 4、数据类型二:Lists
1.关于list的组织形式 列表数据类型(Lists)可以存储一个有序的字符串列表,常用的操作时向列表两段添加元素,或者获取列表的某一个片段.列表类型的底层实现是一个双向链表(double linke ...