2015-05-09 124 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; 
    } 
} 
相關問題