如何将 csrf 令牌放入 spring 控制器?

Posted

技术标签:

【中文标题】如何将 csrf 令牌放入 spring 控制器?【英文标题】:how to get csrf token into spring controller? 【发布时间】:2017-04-06 22:32:17 【问题描述】:

我正在尝试从带有基于 xml 配置的 spring 4 的 REST 控制器返回 CSRF 令牌。

我试过这个:

@RestController
public class Somecontroller
@RequestMapping("/csrf")
public CsrfToken csrf(CsrfToken token) 
    return token;


但我只是得到一个 404。我错过了什么? 其他一切正常,因为我最初可以登录。

【问题讨论】:

您是否启用了@EnableWebSecurity? How to access Spring CSRF 可能重复。 我正在使用基于xml的spring安全配置(不是基于注释的),从我在网上阅读的内容来看,它应该被启用。此外,链接的问题是关于将令牌从客户端发送到服务器。我需要让客户知道令牌的价值。我读到控制器应该能够将令牌作为映射方法的参数获取,但是当我添加此类方法并尝试访问它时,出现 404 状态错误。 【参考方案1】:

我正在寻找一种方法来通知客户 csrf 值。 我已经看到了从名为“_csrf”的会话属性中读取 csrf 的示例。这让我觉得很奇怪,而且将来很容易被改变。

但是我最终还是这样做了。

【讨论】:

我看到一些用户使用CsrfToken requestToken = (CsrfToken) request.getAttribute(CsrfToken.class.getName());

以上是关于如何将 csrf 令牌放入 spring 控制器?的主要内容,如果未能解决你的问题,请参考以下文章

Spring(Spring Boot)如何向前端提供 CSRF 令牌?

如何将 CSRF 令牌从 AngularJS 前端发送到 Spring REST 服务后端?

spring 如何使用 _csrf 参数或 X-CSRF-TOKEN 标头在内部验证 csrf 令牌?

如何在 Postman 中设置 CSRF 令牌

如何将包含 CSRF 令牌的数据从 angularjs 控制器提交到 REST 控制器?

如何从Postman休息客户端发送spring csrf令牌?