控制器通过FreeMarker和弹簧发生403错误

问题描述 投票:1回答:1

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

我发现在<#list elmas set>中写的代码无法获得控制器

这有效

<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错误。为什么?

java spring controller freemarker http-status-code-403
1个回答
0
投票

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

<input type="hidden" name="_csrf" value="${_csrf.token}" />
© www.soinside.com 2019 - 2024. All rights reserved.