Laravel 5.3 - TokenMismatch,使用post方法,我没有表格

时间:2017-02-08 14:14:37

标签: php laravel laravel-5.3

我找到了大量链接,告诉我在表单上插入csrf。但是当你有表格时该怎么办?我使用post方法允许其他应用程序在数据库上发布内容。

public function store(Request $request)
{
    if ($request->isMethod('post')) {
        $solicitation = new Solicitation;
        $solicitation->name = $request->name;
        $solicitation->description = $request->description;
        $solicitation->userid = $request->userid;
        if ($request->hasFile('file')) {
            $request->file('file')->move("uploads", $request->file('file')->getClientOriginalName());
            $solicitation->file = "http://192.168.1.85:3232/uploads/" . $request->file('file')->getClientOriginalName();
        }
        $solicitation->save();
    }
}

错误:

TokenMismatchException in VerifyCsrfToken.php line 68:

修改

解决方法/解决方案

步骤1)编辑文件:VerifyCsrfToken.php(app \ Http \ Middleware \ VerifyCsrfToken.php)

步骤2)修改以下内容:

protected $except = [
    'solicitation/*', //INSERT THE NAME OF YOUR ROUTE HERE
];

享受。

4 个答案:

答案 0 :(得分:2)

您可以编辑Http \ Middleware中的VerifyCsrfToken类以排除路径

答案 1 :(得分:0)

每次使用_token方法时,都应使用POST参数发送请求。

答案 2 :(得分:0)

您有两个选择:从csrf中排除此路由或使用请求发送令牌。 https://laravel.com/docs/5.3/csrf#csrf-excluding-uris

答案 3 :(得分:0)

听起来你正在描述一个API。 如果您从单独的Laravel应用程序发送请求,则令牌不会是一致的。 解决方案是在外部应用程序上生成当前应用程序期望并且可以验证的请求签名/令牌。您可以使用Laravel Passport:https://laravel.com/docs/5.3/passport