Ошибка 403 с контроллером через FreeMarker и пружину - PullRequest
1 голос
/ 27 марта 2019

Я создал страницу * .ftl с некоторыми тегами и хочу, чтобы все это работало с моим конкретным контроллером.

Я обнаружил, что код, написанный внутри <#list el as 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();
    }

Код из списка получает и отправляет правильный идентификатор, но я получаю ошибку 403.Почему?

1 Ответ

0 голосов
/ 27 марта 2019

Во второй форме вам не хватает токена csrf для аутентификации

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