我想注销用户到非惯性url。所以我必须将csrf token
传递给post方法的表单。
<!-- Authentication -->
<form
method="POST"
:action="route('logout')"
>
<input type="hidden" name="_token" :value="$page.props.csrf_token">
<jet-dropdown-link
colors="text-red-700 focus:bg-gray-200 hover:bg-gray-200"
as="button"
>
logout
</jet-dropdown-link>
</form>
但是它给了我一个419 page expired
响应。
当i为console.log("this.$page.props.csrf_token")
时显示为undefined
。
我该怎么办?
这是我的错。我应该仔细阅读文档的。
这样你可以与惯性中间件共享令牌。
namespace AppHttpMiddleware;
class HandleInertiaRequests extends Middleware
{
public function share(Request $request)
{
return array_merge(parent::share($request), [
'csrf' => csrf_token(),
]);
}
}
,然后在惯性分量中通过
访问它this.$page.props.csrf
来源你需要在你的" " form"并添加
<meta name="csrf-token" content="{{ csrf_token() }}">
在你的布局
最简单的方法是使用csrf_field
:
<form>
{{ @csrf_field() }}
<!-- other fields -->
</form>
对于任何需要找到一种方法将csrf令牌传递给惯性的人,我特别有一个用例是需要有一个导出csv文件按钮来发送实际的非ajax HTTP请求-因此不能依赖axios的自动csrf功能-所以我可以返回文件下载。我所做的是在控制器中填充$page。Props,你可以将属性设置为方法'csrf_token()'的值。所以- - - - - -
惯性::渲染('VueComponent', ['attribute_name' =>
csrf_token ()));