2016-11-01 4 views
0

Ich habe ein Formular, das an OrgController @ Store auf Beitrag auf der Seite gehen soll. Was passiert, ist, dass es auf/in meine Store-Funktion in OrgController umzuleiten scheint.Laravel 5.3 Formular Weiterleitungen zum Einloggen auf Post

Laut meiner Registerkarte Netzwerke in Firebug macht es POSTS zu/org/add dann macht eine GET-Anfrage aus irgendeinem Grund, auch wenn ich meinen Aufruf an die Auth Middleware auskommentieren.

Die GET Request zu login sieht, dass ich eingeloggt bin und leitet mich dann dorthin, wo die Laravel Auth RedirectIfAuthenticated zu gehen ist. (Was in diesem Fall ist /).

Grundsätzlich möchte ich mein Routing Auth respektieren aber auch POST zu meinem Formular.

Meine Route sieht so aus.

Route::group(['prefix' => 'org'], function() { 
    Route::get('search', '[email protected]'); 
    Route::get('browse', '[email protected]'); 
    Route::get('add', '[email protected]'); 
    Route::post('add', '[email protected]'); 
}); 

und mein Formular sieht so aus.

<form method="post" action=""> 
     <div class="form-group"> 
      <label for="parent_org">Parent Organization</label> 
      <select class="form-control" id="parent_org" required="true"> 
         <option>Org Unit 1</option> 
         <option>Org Unit 2</option> 
         <option>Org Unit 3</option> 
         <option>Org Unit 4</option> 
      </select> 
     </div> 
     <div class="form-group"> 
      <label for="org_name">Org Unit Name</label> 
      <input type="text" class="form-control" id="org_name" required="true"> 
     </div> 
     <div class="checkbox"> 
      <label><input type="checkbox">Will users be added directly to this organization unit?</label> 
     </div> 
     <button type="submit" class="btn btn-primary">Add Org</button> 
</form> 

meine php Handwerker Route: Liste zeigt folgendes.

|  | GET|HEAD | org     |  | App\Http\Controllers\[email protected]        | web,eventlog,auth | 
|  | POST  | org/add    |  | App\Http\Controllers\[email protected]        | web,eventlog,auth | 
|  | GET|HEAD | org/add    |  | App\Http\Controllers\[email protected]         | web,eventlog,auth | 
|  | GET|HEAD | org/browse    |  | App\Http\Controllers\[email protected]        | web,eventlog,auth | 
|  | GET|HEAD | org/search    |  | App\Http\Controllers\[email protected]        | web,eventlog,auth | 

Ich bin mit den einem benutzerdefinierten Auth-Provider die Laravel in Auth gebaut erstreckt.

Vielen Dank im Voraus

Antwort

1

Woops.

Das Problem war, dass ich vergaß, dass ich meinen Ausnahmehandler gesetzt hatte.

if ($exception instanceof TokenMismatchException) { 
      return redirect('/login'); 
    } 

Ebenso hatte ich mein CSRF-Token nicht in meiner Form. So wurde der ungültige CSRF-Token-Fehler unterdrückt und auch zur Anmeldung weitergeleitet.

.. Lektion gelernt.

1

Deaktivieren Sie nicht das Token auf der Anmeldeseite oder eine URL mit einer Postanforderung aus Sicherheitsgründen. Fügen Sie einfach {{csrf_token()}} in Ihre Formularfelder ein. csrf_token gibt ein verborgenes Eingabefeld mit einem Token zurück. Es schützt Ihre Formulare vor Missbrauch außerhalb.

<form method="post" action=""> 
      <div class="form-group"> 
       <label for="parent_org">Parent Organization</label> 
     Add csrf_token anywhere inside your form 
      {{csrf_token()}} 
       <select class="form-control" id="parent_org" required="true"> 
          <option>Org Unit 1</option> 
          <option>Org Unit 2</option> 
          <option>Org Unit 3</option> 
          <option>Org Unit 4</option> 
       </select> 
      </div> 
      <div class="form-group"> 
       <label for="org_name">Org Unit Name</label> 
       <input type="text" class="form-control" id="org_name" required="true"> 
      </div> 
      <div class="checkbox"> 
       <label><input type="checkbox">Will users be added directly to this organization unit?</label> 
      </div> 
      <button type="submit" class="btn btn-primary">Add Org</button> 
    </form>