spring - 前端如何获取后端生成的 CSRF 令牌?
问题描述
我正在开发 Web 应用程序的后端 API(使用 Spring Boot)。API 使用 JWT 令牌对用户进行身份验证。我有一个用于注册帐户的端点 ( POST /register
)。
由于它是一个 POST 方法,它需要来自前端的 CSRF 令牌,并且我还在每个响应的标头中附加了 CSRF 令牌。但是,当前端想要调用这个端点时,它需要首先发送一个虚拟注册请求(这将失败),只是为了获取 CSRF 令牌。我的问题是:有没有更好的方法让他们获得 CSRF 令牌?我应该在注册之前创建一个端点GET /csrf
来获取令牌吗?
顺便说一句,由于我对网络安全性比较陌生,我想知道在每个响应中附加 CSRF 令牌是否是一种好习惯?这是我在 Spring 中的配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.addFilter(new JwtAuthenticationFilter(authenticationManager()))
.authorizeRequests()
.antMatchers(HttpMethod.POST, "/register").permitAll()
.anyRequest().authenticated();
}
解决方案
推荐阅读
- php - Laravel 8 迁移工作,但 MySQL 拒绝连接
- jpa - 如何避免 JPA 持久化直接插入数据库?
- php - 我想根据数据库中的记录限制底部的页码分页。我给出了条件,但它不起作用。请检查一下
- javascript - 从导入的 React 组件访问变量
- java - 在java aws lamba中使用rest Temple调用另一个第3方rest api时连接超时
- google-cloud-platform - 如何从 Google Cloud Source Repository 克隆特定分支
- spring - 带有 EST 区域的 Spring Scheduled 注释,不起作用
- r - 按一列分组,并从其他列中选择相应的行值
- android - firebase 无法解析 android 应用程序模块的 gradle 配置
- automation - 本地存根服务器的赛普拉斯请求 PATCH 调用失败