如何在Angular2中使用Yii2 csrf令牌?

t5fffqht  于 2022-11-09  发布在  Angular
关注(0)|答案(1)|浏览(142)

我已经在yii2中创建了angular2应用程序和REST API。
Yii2控制器为**“yii\rest\控制器”**
Angularjs和Angular2两者都非常不同。

我不了解如何在angular2 post请求中使用CSRF标记。

Angular2和yii2没有任何连接。只有api在yii2中调用。

hrysbysz

hrysbysz1#

在SiteController中添加此函数以显示csrf令牌

public function actionCsrf()
{
    Yii::$app->response->format = Response::FORMAT_JSON;
    return [
        '_csrf' => Yii::$app->request->csrfToken
    ];
}

和添加隐藏在表单中输入类型,就像在html上一样

<form>
...
<input type="hidden" name="_csrf" id="_csrf" value="" />
...
</form>

在你的Angular ,它的版本在jquery上javascript

<script type="text/javascript">
    $.ajax({
        type : "GET",
        data : "",
        dataType: 'json',
        contentType: "application/json",
        url : "http://localhost/app/web/site/csrf",
        success : function(result){
            var resultObj = result;
            document.getElementById("_csrf").value = resultObj._csrf;
        }
    });
</script>

相关问题