【发布时间】:2017-05-30 16:34:13
【问题描述】:
今天遇到了从 Angular SPA 上的 html 模板提交表单的问题。 首先,带有提交的简单表单不能开箱即用,因为 Angular 捕获了提交事件,不允许提交表单。
<form action="/api/connect/facebook" method="POST">
<input type="hidden" name="scope" value="email" />
<button type="submit" class="btn btn-primary btn-block"><i class="icon-facebook"></i> Login via Facebook</button>
</form>
要让 Angular 忽略这一点并让您的浏览器执行帖子,您必须添加 ngNoForm 标头:
<form ngNoForm action="/api/connect/facebook" method="POST">
<input type="hidden" name="scope" value="email" />
<button type="submit" class="btn btn-primary btn-block"><i class="icon-facebook"></i> Login via Facebook</button>
</form>
这对于 SPA 来说可能不是很常见,因为这样的表单提交会使浏览器远离 SPA,但这正是我所需要的。
好东西 - 我使用 spring-boot 作为我的后端,所以使用 spring-security 它有很好的 csrf 和 cors 保护不让我提交表单。我得到了例外:
在请求参数“_csrf”上发现无效的 CSRF 令牌“null” 或标题“X-CSRF-TOKEN”
那么,问题是如何为angular模板提供csrf的值?
【问题讨论】:
标签: angular spring-security csrf csrf-protection