控制器通过 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}" />
我创建了带有一些标签的页面 *.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}" />