Laravel 5.4发布请求令牌不匹配

时间:2017-02-24 22:10:17

标签: php laravel api laravel-5

我正在学习在Laravel中创建API。我创建了一个CRUD控制器,我有一个空的存储函数:

public function store(Request $request)
{
    dd('store');
}

当我尝试使用Postman发布帖子请求时,我收到了令牌不匹配异常:

"Illuminate\Session\TokenMismatchException">TokenMismatchException in
   "/Users/andrei/Desktop/api.dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php line 68">VerifyCsrfToken.php line 68

我没有表单放置{{csrf ..}}的post方法。怎么解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:1)

如果您使用表单提交,则必须使用{{ csrf_field() }},该<input type='hidden' name='_token' value="tokenvalueofcharsans numbers" />将呈现为{{ csrf_field() }}。但是,如果您只是发送ajax请求而无法在请求中设置$except,则必须:
1-在app/Http/Middleware/VerifyCsrfToken中间件的public void inOrder(BNode root) { if(root == null) { return; } inOrder(root.left); System.out.println(root.value); inOrder(root.right); } 变量中添加您的网址,从csrf验证中排除您的网址。
2-找到一种方法来验证csrf在此轨道中不受影响。

答案 1 :(得分:1)

对于API,您应该使用$except中间件中的VerifyCsrfToken属性将其从CSRF中排除。