2015-03-22 3 views
3

У меня возникла проблема с запросом POST cURL к моему приложению. В настоящее время я создаю успокоительную функцию регистрации с помощью Laravel 5.Laravel cURL POST Throwing TokenMismatchException

маршрутов для этого пример

localhost:8000/user/create

я прохожу значение с помощью Curl функции на терминал

curl -d 'fname=randy&lname=tan&id_location=1&[email protected]&password=randytan&remember_token=Y&created_at=2015-03-03' localhost:8000/auth/register/ 

И это мои маршруты.php

Route::post('user/create', '[email protected]');

И это моя функция для хранения пользователю регистрации

public function create() 
    { 
     //function to create user. 
     $userAccounts = new User; 
     $userAccounts->fname = Request::get('fname'); 
     $userAccounts->lname = Request::get('lname'); 
     $userAccounts->id_location = Request::get('id_location'); 
     $userAccounts->email = Request::get('email'); 
     $userAccounts->password = Hash::make(Request::get('password')); 
     $userAccounts->created_at = Request::get('created_at'); 

     $userAccounts->save(); 

     return Response::json(array(
       'error' => false, 
       'user' => $userAccounts->fname . " " . $userAccounts->lname 
      ), 200); 

    } 

Отработка локонов выше синтаксис, я получаю эту ошибку TokenMismatchException

Есть ли у вас какие-нибудь идеи?

Поскольку я реализую промежуточное программное обеспечение только в нескольких моих URL-адресах, и этот URL-адрес регистрации cURL не тесно связан с каким-либо механизмом аутентификации.

Спасибо прежде.

ответ

2

Laravel 5 по умолчанию применяет аутентификацию маркера CSFR в промежуточном программном обеспечении.

  1. вы можете отключить CSFR по выбранному маршруту Вот link
  2. или вы можете попробовать некоторые из этих solutions. Надеюсь, это поможет.

  3. изменения ваш CSFR лексема метод /app/Http/Middleware/VerifyCsrfToken.php

    public function handle ($request, Closure $next) { if (!$request->is("api/*")) { return parent::handle($request, $next); } return $next($request); }

+0

Благодарим за ссылку 2. Я в конечном итоге изменения 'ручку (...)' функция в классе 'VerifyCsrfToken'. Я добавил 'if ($ request-> is (" api * ")) возвращает $ next ($ request);' непосредственно перед возвратом. Теперь все запросы/api * проходят через CSFR. – Eamorr

+0

Является ли это публичным API? Потому что вы не должны отключать Csrf, если вы не удовлетворены тем, кто отправляет запросы API. – Chris

9

В Laravel 5 (последняя версия) вы можете указать маршруты, которые вы хотите исключить в /app/Http/Middleware/VerifyCsrfToken.php

class VerifyCsrfToken extends BaseVerifier 
{ 
    /** 
    * The URIs that should be excluded from CSRF verification. 
    * 
    * @var array 
    */ 
    protected $except = [ 
     'rest-api/*', # all routes to rest-api will be excluded. 
    ]; 


} 

Надеюсь, это поможет.

+0

Это отличное решение, спасибо – zachu

0

В моем случае, мне нужно, чтобы добавить маршрут на api.php вместо web.php

Смежные вопросы