Laravel从外部帖子提交数据:TokenMismatchException(不添加_token)

时间:2015-05-09 10:11:02

标签: laravel laravel-5

我有一个只能控制操作网址的表单。所以不能添加'_token'。是可以将数据传送到我的控制器

外部HTML表单主机在deference位置

<!DOCTYPE html>
<html>
<head>
    <title>Test HTML</title>
</head>
<body>
<form method="post" action="http://www.mylaravelproject.com/confirm">
    <input type="textbox" name="fname">
    <input type="textbox" name="lname">
    <input type="submit">
</form>
</body>
</html>

我的Laravel路线

Route::any('confirm','PageController@confirm');

内部控制器

public function confirm(){
return Input::all();
}

这可能吗?

由于

修改

发现我可以通过删除行(在App / Httm / Kenel.php中)

来做到这一点
'App\Http\Middleware\VerifyCsrfToken',

第二个问题 但它的安全风险。我只需要删除此特定路线'confirm'上的VerifyCsrfToken。

这可能吗?

1 个答案:

答案 0 :(得分:3)

此功能将在Laravel 5.1中开箱即用。

但是在我们等待Laravel 5.1时 - 您可以在5.0中的App\Http\Middleware\VerifyCsrfToken文件中执行此操作:

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
use Illuminate\Session\TokenMismatchException;

class VerifyCsrfToken extends BaseVerifier {

    protected $excludedRouteGroups = ['confirm', 'stripe'];


    public function handle($request, Closure $next)
    {
        if ($this->isReading($request) || ($this->excludedRoutes($request)) || $this->tokensMatch($request)) {
            return $this->addCookieToResponse($request, $next($request));
        }

        Throw new TokenMismatchException;
    }


    protected function excludedRoutes($request)
    {
        foreach($this->excludedRouteGroups as $route) {
            if ($request->segment(1) === $route) {
                return true;
            }
        }

        return false;
    }
}