php - 使用 CSRF 令牌在 React 和 Laravel 之间进行集成
问题描述
我有一个全用 Laravel 构建的应用程序,我的页面是使用刀片文件构建的。但是现在我必须将我的前端迁移到 React 并且我在迁移登录表单时遇到了问题。在我的 login.blade.html 中,我使用@CSRF
符号来验证表单登录,就像这样:
<form method="POST" action="{{ route('login') }}" id="login-form">
@csrf
<div class="row">
<div class="col-12">
<div class="form-group">
<label class="control-label">E-mail*</label>
<input type="text" class="form-control" name="email" value="{{ old('email') }}" placeholder="Email" />
</div>
</div>
<div class="col-12">
<div class="form-group">
<label class="control-label">Senha*</label>
<input type="password" name="password" class="form-control" placeholder="Senha" />
</div>
</div>
<div class="col-12">
<div class="d-block d-sm-flex align-items-center">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck">
<label class="form-check-label" for="gridCheck">
@lang('home.remember-login')
</label>
</div>
<a href="{{ route('password.request') }}" class="ml-auto">Esqueceu a senha ?</a>
</div>
</div>
<div class="col-12 mt-3" style="z-index:2">
<button class="btn btn-primary text-uppercase g-recaptcha"
data-sitekey="{{env('RECAPTCHA_CLIENT_KEY')}}"
data-callback='onSubmit'
data-action='login'>@lang('home.login')</button>
</div>
<div class="col-12 mt-3">
<p>Ainda não tem conta?<a href="/register"> Registrar</a></p>
</div>
</div>
我创建了一个 API,我可以在其中从 React 向 laravel 发送 POST 请求,但我仍然不知道如何@CSRF
使用 API 而不是刀片文件使用相同的身份验证。有人能帮我吗?
解决方案
您可以创建一个元标记并将 csrf 值“csrf_token()”放在一个属性中,然后在 java-script 代码中检索 if。
在你的刀片中:
<meta id ="meta_token" content="{{ csrf_token() }}" />
在你的 js 脚本中:
let token = document.getElementById('meta_token').getAttribute('content');
//Rest of code
推荐阅读
- c++ - ZeroMQ python 到 c++ Pub / Sub
- javascript - 用于检测移动应用程序中的 Enter 键按下的 Java 脚本
- f# - F#多个一对多关系
- machine-learning - seq2seq - 推理模型在相同的验证集上产生与训练模型截然不同的结果
- python - 即使没有调用列表,它也会不断变化
- java - 运行 JavaFX 时应用程序启动方法中的异常
- python - 从 pandas 数据框中的一列元组中删除元素
- java - 在 Spring Boot 中自动将 HashSet 转换为连接字符串
- python - 我需要删除括号以进行标记化吗?正则表达式分词器
- postgresql - 无法计算日期范围内的工作时间 Postgresql