yii2 csrf验证以及token管理

开启/关闭csrf

默认情况下yii2是开启了csrf验证功能的,如果需要关闭它的话,只要在控制器中设置一个属性就可以:

public $enableCsrfValidation = false;

一般情况下不建议关闭,但api场景可能需要关闭。

TOKEN生成管理

token生成有三种方式

meta标签

在模板中使用 <?=yii\helpers\Html::csrfMetaTags();?> 即可生成meta标签,如下

<meta name="csrf-param" content="_csrf">
<meta name="csrf-token" content="NnNIMTVXUFJuN3tJDDAPAFk4OWBFOAgiBEIiX1kUPTdlJytXQAh9YQ==">

meta标签主要是给ajax用的,ajax提交的时候可以直接从meta中获取csrf-token然后一并提交给后端,csrf-param就是参数名称,也可以直接通过header头提交,以jquery为例:

$.ajaxSetup({
  headers: {
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
});

表单隐藏域

使用 <?=yii\helpers\Html::beginForm();?> 替代手动输入 <form> 标签,yii2框架会自动添加一个隐藏的input,类似下面这样:

 <form>
    <input type="hidden" name="_csrf" value="NnNIMTVXUFJuN3tJDDAPAFk4OWBFOAgiBEIiX1kUPTdlJytXQAh9YQ==">

当然,为了保持对称,建议使用 <?=yii\helpers\Html::endForm();?> 替代 </form>

字符串

<?=Yii::$app->request->getCsrfToken();?> 可以直接获取到token,这样随便放在哪个位置,比较灵活。但记得post的时候要记得提交给后端,参数名字的话默认是 _csrf ,也可以通过 Yii::$app->request->csrfParam 获取。

转载于:https://my.oschina.net/cxz001/blog/663550

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值