如何将 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 令牌?