在车把模板中添加防伪令牌

时间:2018-08-13 19:33:19

标签: c# asp.net-core-mvc handlebars.js antiforgerytoken

我已将剃刀视图更改为车把模板。

在剃须刀视图中:

 using (Html.BeginForm("Start", "Form", FormMethod.Post, new { formTypeId = @Model.TypeId, organizationId = @Model.OrganizationId }))
 {
     @Html.AntiForgeryToken()
     <input type="hidden" name="formTypeId" value="@Model.TypeId" />
     <input type="hidden" name="organizationId" value="@Model.OrganizationId" />
     <button class="btn btn-primary btn-block" type="submit">Start</button>
 }

在车把模板中:

<form action="{{StartLink}}" method="post">
    <input type="hidden" name="formTypeId" value="{{TypeId}}" />
    <input type="hidden" name="organizationId" value="{{OrganizationId}}" />
    <button class="btn btn-primary btn-block" style="margin-bottom: 5px;" type="submit">Start</button>
</form>

我不确定如何将防伪令牌添加到车把表单中。

1 个答案:

答案 0 :(得分:0)

好的,这就是我想出的。

在我的index.cshtml中,我将防伪令牌传递给创建车把模板的js。

@section scripts {
    <script>
        $(function () {
            window.formListBuilder = new app.components.FormListBuilder({
                container: '#forms-container',
                baseUrl: '@baseUrl.ToString()',
                antiForgeryToken: '@Html.AntiForgeryToken()',
                currentUser: JSON.parse('@Html.Raw(Json.Serialize(currentUser))')
            })
        });

    </script>
}

然后在车把模板中,我使用防伪令牌。

<form action="{{StartLink}}" method="post">
                    {{{antiForgeryToken}}}
                    <input type="hidden" name="formTypeId" value="{{TypeId}}" />
                    <input type="hidden" name="organizationId" value="{{OrganizationId}}" />
                    <button class="btn btn-primary btn-block" style="margin-bottom: 5px;" type="submit">Start</button>
                </form>

这是可以接受的解决方案,还是以某种方式绕过了安全性?