2015-05-09 117 views
1

我有一个表单只能控制动作URL。所以不能添加'_token'。是可以将数据获取到我的控制器Laravel从外部提交数据后提交:TokenMismatchException(不添加_token)

听从位置外部HTML表单主机

<!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','[email protected]'); 

内部控制

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

这是可能的??

感谢

编辑:

才发现我能做到这一点通过清除管线(内部应用程序/ Httm/Kenel.php)

'App\Http\Middleware\VerifyCsrfToken', 

第二个问题 但它的种类的安全风险。我只需要删除这个特定路线上的VerifyCsrfToken'确认'。

这是可能的吗?

回答

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; 
    } 
}