Laravel + ReactJS 页面即使设置了元中的csrf_token也过期了



我正在使用Laravel 5.6和ReactJS 16.4.1构建一个Web应用程序。

我在<head>上设置了master.blade.phpcsrf_token,如下所示:

<meta name="csrf-token" content="{{csrf_token()}}">

然后在我的 reactJs 上,我像这样加载了我的注册组件:

export default class RegistrationForm extends Component {
render() {
return (
<React.Fragment>
<form method="post" action={this.props.actionUrl}>
<div className="form-group">
<label htmlFor="txtEmail">Email</label>
<input type="email" name="txtEmail" id="txtEmail" className="form-control" placeholder="Email" />
</div>
<div className="form-group">
<label htmlFor="exampleInputPassword1">Password</label>
<input type="password" name="txtPassword" id="txtPassword" className="form-control" placeholder="Password" />
</div>
<div className="text-right">
<button type="submit" name="btnRegister" id="btnRegister" className="btn btn-primary">Register</button>
</div>
</form>
</React.Fragment>
);
}
}

然后,当我点击注册按钮时,我被重定向到The page has expired due to inactivity. Please refresh and try again.页面。

我不确定为什么即使我已经有了 csrf 令牌元,这种情况仍在发生。

我已经尝试过了,但仍然不起作用。

但是当我删除Kernel.php上的VerifyCsrfToken时,它可以工作。AppHttpModulesCommonMiddlewareVerifyCsrfToken::class

删除此类是否安全?虽然我仍然想对 csrf 进行验证,为什么我不想只是在中间件上删除它。

我手动添加了一个隐藏字段,{{csrf_token()}}作为值,现在可以工作了。似乎在 reactjs 上,除了元 csrf 令牌之外,还应手动添加此字段。

最新更新