【问题标题】:How to work Yii2 csrf token in Angular2?如何在 Angular2 中使用 Yii2 csrf 令牌?
【发布时间】:2018-01-30 12:42:45
【问题描述】:

我在 yii2 中创建了 angular2 应用程序和 REST api。

Yii2 控制器是 "yii\rest\Controller"

Angularjs 和 Angular2 都非常不同。

我不明白如何在 angular2 post 请求中使用 CSRF 令牌。

Angular2 和 yii2 没有任何联系。 yii2 中只有 api 调用。

【问题讨论】:

  • 不重复...我认为您对 Angular2 不了解
  • "获取token使用yii.getCsrfToken(),但是必须注册yii\web\YiiAsset资产。" - 就这些了,不难读。
  • Yii2 在仅开发休息 api 然后我没有得到 yii.getCsrfToken()
  • 开发完整的客户端 angular2 应用程序。

标签: yii yii2


【解决方案1】:

在您的 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 中获取 ajax,它在 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>

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2012-05-29
    • 2020-08-15
    • 1970-01-01
    • 2017-11-16
    相关资源
    最近更新 更多