ruoyi添加csrf
时间: 2025-02-07 18:19:32 浏览: 94
### 添加 CSRF 保护配置
为了增强 Ruoyi 框架的安全性并防止跨站请求伪造(CSRF),可以在 Spring Security 配置中启用 CSRF 支持。默认情况下,Spring Security 已经提供了对 CSRF 的支持,只需进行适当配置。
#### 修改 `application.yml` 文件中的安全设置
在应用的配置文件中加入如下内容来开启全局 CSRF 保护:
```yaml
spring:
security:
csrf:
enabled: true
```
此操作将在整个应用程序范围内激活 CSRF 保护措施[^1]。
#### 自定义过滤器链路规则
对于特定 URL 路径可能不需要 CSRF 保护的情况,在网关路由配置里可以针对这些路径禁用该特性。例如,基于提供的网关配置示例,可以通过修改 `predicates` 来排除某些 API 接口不受 CSRF 影响:
```yaml
routes:
- id: ruoyi-auth
uri: lb://ruoyi-auth
predicates:
- Path=/auth/**
filters:
- StripPrefix=1
- name: RemoveCsrfHeaderFilter
args:
headerNameToRemove: X-CSRF-TOKEN
```
这里假设存在名为 `RemoveCsrfHeaderFilter` 的自定义 Filter 可用于移除指定名称的头部字段;实际项目开发过程中可根据需求调整具体实现方式[^2]。
#### 设置隐藏输入域或头信息传递 Token
当启用了 CSRF 后,前端页面提交表单时需附带有效的 `_csrf` 参数值作为验证依据。通常有两种做法:一种是在 HTML 表单内增加 `<input type="hidden">` 元素保存 token;另一种则是利用 JavaScript/AJAX 请求时通过 HTTP 头部携带 token 数据。下面给出一个简单的例子展示如何处理 POST 方法下的表单数据传输过程:
```html
<form action="/submitForm" method="post">
<!-- ...其他表单项... -->
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
</form>
```
或者使用 Axios 库发起异步调用来代替传统同步加载模式:
```javascript
axios.post('/api/data', {
// 发送的数据体...
}, {
headers: {'X-CSRF-TOKEN': document.querySelector('[name="_csrf"]').value}
})
.then(response => console.log('Success:', response))
.catch(error => console.error('Error:', error));
```
上述代码片段展示了两种不同的场景下如何正确地向服务器端提供必要的认证凭证以满足安全性要求[^3]。
阅读全文
相关推荐


















