控制器通过 FreeMarker 和 spring 出现 403 错误

403 error with controller via FreeMarker and spring

我创建了带有一些标签的页面 *.ftl 并希望所有这些都与我的特定控制器一起工作。

我发现在<#list el as set>里面写的代码获取不到controller

这个有效

<div>
    <form action="/deckStatusDel" method="post">
        <input type="text" name="deckstatusid" value="${deckstatus1}" />
        <input type="hidden" value="${deck.id}" name="deckId">
        <input type="hidden" name="_csrf" value="${_csrf.token}" />
        <button type="submit">Delete status</button>
    </form>
</div>

这不是

<#list deck_statuses as deck_status>
    <div>
        <form action="/deckStatusDel" method="post">
            <input type="text" value="${deck_status.id}" name="deckstatusid">
            <span>${deck_status.status}</span>
            <button type="submit">Delete status</button>
        </form>
    </div>
    <#else>
    empty
    </#list>

控制器代码

@PostMapping("/deckStatusDel")
    public String deckStatusDelete(
            @RequestParam Long deckstatusid,
            @RequestParam("deckId") Deck deck
    ) {
        deckStatusesRepo.deleteById(deckstatusid);
        return "redirect:/deck/"+deck.getId();
    }

列表中的代码正在获取和发送正确的 ID,但我收到 403 错误。为什么?

在第二种形式中,您缺少用于身份验证的 csrf 令牌

<input type="hidden" name="_csrf" value="${_csrf.token}" />