请写出获取表单令牌{{ csrf_field() }}和{{ csrf_token() }}的区别与应用场景。
时间: 2023-11-01 14:44:45 浏览: 74
laravel框架中表单请求类型和CSRF防护实例分析
在 Laravel 中,CSRF (Cross-Site Request Forgery) 防护是默认启用的,它可以防止跨站请求伪造攻击。为了实现 CSRF 防护,Laravel 提供了两种方法来生成表单令牌:`{{ csrf_field() }}` 和 `{{ csrf_token() }}`。
- `{{ csrf_field() }}`:该方法会生成一个隐藏的 `_token` 字段,同时也会将会话中的 CSRF 令牌存储到 cookies 中。在提交表单时,Laravel 会自动验证这个 `_token` 字段是否匹配会话中的 CSRF 令牌以防止 CSRF 攻击。应用场景:适用于表单中需要包含其他字段的情况,比如表单中还有 input、select、textarea 等元素。
- `{{ csrf_token() }}`:该方法会仅生成一个 CSRF 令牌,适用于自定义表单实现,需要手动将 CSRF 令牌插入到表单中的情况。
综上所述,`{{ csrf_field() }}` 适用于一般的表单场景,而 `{{ csrf_token() }}` 则适用于自定义表单的场景。无论使用哪种方式,都可以有效地防止 CSRF 攻击。
阅读全文